uvalive 3644 X-Plosives

来源:互联网 发布:手机打网络电话软件 编辑:程序博客网 时间:2024/06/07 02:30

思路:简单的并查集应用,两个点有相同的祖先是组成环,会引起爆炸,不能放,num++。

#include <iostream>#include <cstring>#include <stdio.h>using namespace std;int f[100008];int find(int x){    return x==f[x]?x:f[x]=find(f[x]);}int init(){    for(int i=0;i<100008;i++)        f[i]=i;    return 1;}int main(){    //freopen("in.txt","r",stdin);    int x,y,num=0;    init();    while(scanf("%d",&x)!=EOF)    {        if(x==-1)        {            printf("%d\n",num);            num=0;            init();            continue;        }        scanf("%d",&y);        int xx=find(x);        int yy=find(y);        if(xx==yy)            num++;        else            f[xx]=yy;            find(x);    }}

0 0
原创粉丝点击