#include<stdio.h>
int dfs(int a,int *s,int n){
int m=0;
for(;m<a;m++){
if(s[n*a+m]&&!s[a*a+m]){
s[a*a+m]=1;
printf("%d ",m);
dfs(a,s,m);
}
}
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
int s[a*(a+1)],g[a],n=0,m,c,d;
for(;n<a*(a+1);n++){
s[n]=0;
}
for(n=0;n<b;n++){
scanf("%d%d",&c,&d);
s[c*a+d]=s[d*a+c]=1;
}
for(n=0;n<a;n++){
if(!s[a*a+n]){
s[a*a+n]=1;
printf("{ %d ",n);
dfs(a,s,n);
printf("}\n");
}
}
for(n=c=d=0;n<a;n++){
if(s[a*a+n]){
g[c++]=n;
s[a*a+n]=0;
printf("{ ");
for(;d<c;){
for(m=0;m<a;m++){
if(s[g[d]*a+m]&&s[a*a+m]){
g[c++]=m;
s[a*a+m]=0;
}
}
printf("%d ",g[d++]);
}
printf("}\n");
}
}
}
7-6 列出连通集
于 2021-12-14 02:30:17 首次发布