讨论 / 啦啦啦,种太阳!
caoyue2017 2017-09-10 14:37:46
点我顶贴 收藏 删除
#include<cstdio>

int bb[1010],th[1010],ans=-1;

int max(int x,int y){return x>y?x:y;}

int zbb(int a)

{

if(bb[a]==a)

return a;

else

{

bb[a]=zbb(bb[a]);

return bb[a];

}

}

void chz(int a,int b)

{

int x=zbb(a);

int y=zbb(b);

if(x!=y) bb[y]=x;

if(x==y) return;

th[x]+=th[y];

ans=max(ans,th[x]);

}

int main()

{

int n,m;scanf("%d %d",&n,&m);

for(int i=1;i<=1010;i++)

{

bb[i]=i;th[i]=1;

}

for(int i=1;i<=m;i++)

{

int x,y;

scanf("%d %d",&x,&y);

chz(x,y);

}

printf("%d",ans);

return 0;

}

#1 caoyue2017@2017-09-10 14:38:32
回复 删除
自顶
#2 caoyue2017@2017-09-10 14:38:35
回复 删除
再顶
#3 lijie201602@2017-09-10 14:43:43
回复 删除
辣鸡CY
#4 lijie201602@2017-09-10 14:43:49
回复 删除
用并查集啊
#5 lijie201602@2017-09-10 14:44:02
回复 删除
#include<cstdio>

int n,m,fa[1001],v[1001];

int findfa(int x)

{

if(x==fa[x]) return x;

return fa[x]=findfa(fa[x]);

}

void change(int x,int y)

{

int a=findfa(x),b=findfa(y);

fa[a]=b;

}

int main()

{

scanf("%d %d",&n,&m);

for(int i=1;i<=n;i++)

{

fa[i]=i;

v[i]=0;

}

for(int i=1;i<=m;i++)

{

int a,b; scanf("%d %d",&a,&b);

change(a,b);

}

int max=0;

for(int i=1;i<=n;++i)

{

int x=findfa(fa[i]);

if(++v[x]>max) max=v[x];

}

printf("%d",max);

return 0;

}

#6 lijie201602@2017-09-10 14:44:06
回复 删除
是不是真傻
#7 lijie201602@2017-09-10 14:48:36
回复 删除
比你的短多了
#8 lijie201602@2017-09-10 14:48:47
回复 删除
略略略
查看更多回复
提交回复