图论之DFS深度优先搜索
#include<iostream>
#define MAXNODE 50
using namespace std;
class Graph{
public:
Graph(){
cout << "Hi~" << endl;
Init();
}
void Init(){
int i;
cout << "请输入结点总数:";
cin >> num_node;
for( i=0;i<MAXNODE;i++ ){
visited[i]=false;
node[i]=i;
}
int n1=0,n2=0;
cout << "在一行中输入两个结点之间的连接关系:(以-1 -1结尾)" << endl;
while( (n1 != -1) && (n2 != -1) ){
cin >> n1 >> n2;
map[n1][n2]=1;
map[n2][n1]=1;
}
cout << "高能预警,我要进行DFS遍历了!!!!!!" << endl;
DFSTraverse();
}
void DFSTraverse(){
int i;
for( i=0;i<num_node;i++ ){
if( !visited[i] )
{
DFS(i);
}
}
}
void DFS(int v){
int i;
visited[v]=true;
visit(v);
for( i=0;i<num_node;i++ ){
if( (map[v][i] == 1) && !visited[i] )
DFS(i);
}
}
void visit(int v){
cout << v << " ";
}
private:
bool visited[MAXNODE];
int node[MAXNODE];
int num_node;
int map[MAXNODE][MAXNODE];
};
int main(){
Graph graph;
}
