数据结构1 - 06-图1 列出连通集
Posted learn-excel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构1 - 06-图1 列出连通集相关的知识,希望对你有一定的参考价值。
1 #include<stdio.h> 2 #define MAXN 10 3 int g[MAXN][MAXN],vis[MAXN],n,e; 4 void init(); 5 void read(); 6 void BFS(int x); 7 void DFS(int x); 8 int main(){ 9 int i,j; 10 scanf("%d %d",&n,&e); 11 init(); 12 read(); 13 14 for(i=0;i<n;i++){ 15 if(vis[i]==0){ 16 printf("{"); 17 DFS(i); 18 printf(" } "); 19 } 20 } 21 for(i=0;i<n;i++) vis[i]=0; 22 for(i=0;i<n;i++){ 23 if(vis[i]==0){ 24 printf("{"); 25 BFS(i); 26 printf(" } "); 27 } 28 } 29 30 return 0; 31 } 32 void init(){ 33 int i,j; 34 for(i=0;i<n;i++) vis[i]=0; 35 for(i=0;i<n;i++) 36 for(j=0;j<n;j++){ 37 g[i][j]=0; 38 } 39 } 40 void read(){ 41 int i,v1,v2; 42 for(i=1;i<=e;i++){ 43 scanf("%d %d",&v1,&v2); 44 g[v1][v2]= 1; 45 g[v2][v1]= 1; 46 } 47 } 48 void DFS(int x){ 49 int i; 50 vis[x]=1; 51 printf(" %d",x); 52 for(i=0;i<n;i++){ 53 if(vis[i]==0 && i!=x && g[x][i]!=0) DFS(i); 54 } 55 56 } 57 void BFS(int x){ 58 int i,queue[MAXN],front,rear,value; 59 front=-1;rear=0; 60 queue[0] = x; 61 vis[x]=1; 62 while(front!=rear){ 63 front = (front+1)%MAXN; 64 value = queue[front]; 65 printf(" %d",value); 66 for(i=0;i<n;i++){ 67 if(i!=value && g[value][i]!=0 && vis[i]==0){ 68 if(((rear+1)%MAXN)==front) break; 69 else { 70 rear = (rear+1)%MAXN; 71 queue[rear] = i; 72 vis[i]=1; 73 } 74 } 75 } 76 } 77 78 }
以上是关于数据结构1 - 06-图1 列出连通集的主要内容,如果未能解决你的问题,请参考以下文章