算法+数据结构=程序 这道题看的别人的代码 我已开始用的是并查集做的没有做出来 我怀疑是有环状图 然后看别人的代码用的是dfs做的 代码量很小 使用的空间也是非常的小
# include <stdio.h>
# include <string.h>
int a[205][205];
int b[205];
void dfs(int k)
{
int i;
b[k]=1;
for(i=1;i<=204;i++)
{
if(a[k][i])
{
if(!b[a[k][i]])
dfs(a[k][i]);
}
}
}
int main ()
{
int j,count,n,ll=0,i,m,x,num;
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&num);
if(num==0)
ll++;
for(j=1;j<=num;j++)
{
scanf("%d",&x);
a[i][n+x]=x+n;
a[n+x][i]=i;
}
}
count=0;
for(i=1;i<=n;i++)
{
if(!b[i])
{
dfs(i);
count++;
}
}
if(ll==n)
printf("%d\n",ll);
else
printf("%d\n",count-1);
return 0;
}
把一道题转换为图是一件很困难的事