

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(" }\n");
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(" }\n");
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 }
来源:https://www.cnblogs.com/Learn-Excel/p/12632689.html
