九度教程第66题

2014-11-24 08:11:13 · 作者: · 浏览: 0
C语言 源码
[cpp]
#include
int a[1000][1000];
void dfs(int k,int visited[],int n)
{
int i;
for(i=0;i
{
if(a[k][i]!=0&&visited[i]==0)
{
visited[i]=1;
dfs(i,visited,n);
}
}
}
int main()
{
int n,m,i,j,k,l,num,visited[1000];
scanf("%d",&n);
while(n)
{
for(i=0;i
for(j=0;j
a[i][j]=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d %d",&k,&l);
a[k-1][l-1]=1;
a[l-1][k-1]=1;
}
for(i=0;i
visited[i]=0;
num=0;
for(i=0;i
{
if(visited[i]==0)
{
dfs(i,visited,n);
num++;
}
}
printf("%d\n",num-1);
scanf("%d",&n);
}
}