数据结构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 }
View Code

 

以上是关于数据结构1 - 06-图1 列出连通集的主要内容,如果未能解决你的问题,请参考以下文章

PTA - - 06-图1 列出连通集 (25分)

06-图1 列出连通集

06-图1 列出连通集 (25分)(C语言邻接表实现)

06-图1 列出连通集 (25 分)

06-图1 列出连通集 (25 分)

06-图1 列出连通集 (25分)