UVA 10608并查集

来源:互联网 发布:js模块化规范 编辑:程序博客网 时间:2024/05/16 14:09

没啥说的,其实就是注意一下要让朋友的朋友有关系得再把father连上

#include<stdio.h>#include<string.h>#define max 30010int father[max],visit[max],num[max];int find(int a){    return father[a]==a?a:father[a]=find(father[a]);}void Union(int u,int v){    u=find(u);    v=find(v);    if(u!=v)        father[u]=v;}int main(){    int t,n,m,a,b;    scanf("%d",&t);    while(t--)    {        memset(num,0,sizeof(num));        scanf("%d%d",&n,&m);        for(int i=0;i<max;i++)        {            father[i]=i;        }        for(int i=0;i<m;i++)        {            scanf("%d%d",&a,&b);            Union(a,b);        }        for(int i=0;i<max;i++)            find(i);        int m=0;        for(int i=0;i<max;i++)            num[father[i]]++;        for(int i=0;i<max;i++){            m=m>num[i]?m:num[i];        }        printf("%d\n",m);    }    return 0;}


0 0
原创粉丝点击