HDU 4496 D-City(并查集第一弹~)

来源:互联网 发布:怎样在家开淘宝网店 编辑:程序博客网 时间:2024/06/06 00:53

我自己写的码过不了。。没发现问题,但是还是只能用别人的模板了

#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;#define MAXN 100050int N,M;struct E{    int from;    int to;}edge[MAXN];int map[MAXN],T;int find(int x){    return map[x]==x?x:(map[x]=find(map[x]));}int main(void){    int f,t;    while(~scanf("%d%d",&N,&M))    {        T=N;        int res[M];        memset(res,0,sizeof(res));        for(int i=0;i<N;i++)        {            map[i]=i;        }        for(int i=0;i<M;i++)        {            scanf("%d%d",&f,&t);            edge[i].from=f;            edge[i].to=t;        }        res[M-1]=T;        for(int i=M-1;i>=1;i--)        {            int b=find(edge[i].from);            int c=find(edge[i].to);            if(b!=c)            {                map[b]=c;                res[i-1]=res[i]-1;            }            else            {                res[i-1]=res[i];            }        }        for(int i=0;i<M;i++)            printf("%d\n",res[i]);    }    return 0;}


原创粉丝点击