您的位置:首页 > 其它

深度优先搜索DFS——图邻接矩阵表示

2012-10-07 12:44 495 查看
同样的DFS,这个是用邻接矩阵保存的图,或许应用没有那么广,要浪费较多的空间,但是还是有必要实现一下的,和之前那个算法的思想是一样的,只是变换了存储结构。

/*
图邻接矩阵表示DFS
input:
1
7
A 0 0 0 0 1 0 0
B 0 0 1 1 0 0 0
C 0 1 0 1 0 0 0
D 0 1 0 0 1 1 0
E 1 0 0 1 0 0 1
F 0 0 0 1 0 0 0
G 0 0 0 0 1 0 0
output:
A E D B C F G
*/
#include<iostream>
#include<cstring>
using namespace std;
struct Graph{
//图邻接矩阵表示
char data;
bool *adjacency;
};
void Create(Graph G[],int n){
//创建图邻接矩阵表示
int i,j;
for(i=1; i<=n; i++){
cin>>G[i].data;
G[i].adjacency = new bool
;
for(j=1; j<=n; j++)cin>>G[i].adjacency[j];
}
}
void DFS(Graph G[],int vex,int n,bool visited[]){
//DFS图邻接矩阵表示
if(!visited[vex]){
visited[vex] = true;
cout<<G[vex].data<<' ';
int i;
for(i=1; i<=n; i++){
if(G[vex].adjacency[i] && !visited[i])DFS(G,i,n,visited);
}
}
}
int main(){
Graph *G;
bool *visited;
int t,n;
cin>>t;
while(t--){
cin>>n;
G = new Graph
;
visited = new bool
;
memset(visited,0,sizeof(visited));
Create(G,n);
DFS(G,1,n,visited);
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: