邻接矩阵图的DFS和BFS

图的遍历:两种遍历,输出在每个连通分量外加上括号,简单。

代码:
#include
#include
int a[10][10],ne,nv;
int visited[10];
void DFS(int a[10][10],int v)
{
visited[v]=1;
printf("%d ",v);
for (int i=0;i if(!visited[i]&&a[v][i]==1){
DFS(a,i);
}
}
}
void DFST(int a[10][10])
{
for (int i=0;i visited[i]=0;
}
for (int v=0;v if(!visited[v]){
printf("{ ");
DFS(a,v);
printf("}\n");
}
}
}
int queue[10],top=0,base=0;
void BFST(int a[10][10])
{
for (int i=0;i visited[i]=0;
}
for (int v=0;v if(!visited[v]){
printf("{ ");
visited[v]=1;
printf("%d ",v);
queue[top]=v;
top++;
while(top>=base+1){
int w=queue[base++];
for (int i=0;i if(a[w][i]==1&&visited[i]==0){
visited[i]=1;
queue[top++]=i;
printf("%d ",i);
}
}
}
printf("}\n");
}
}
}
int main()
{
scanf("%d%d",&nv,&ne);
for (int i=0;i {
int x,y;
scanf("%d%d",&x,&y);
a[x][y]=a[y][x]=1;
}
DFST(a);
BFST(a);
}

你可能感兴趣的:(邻接矩阵图的DFS和BFS)