POJ 1182 食物链

来源:互联网 发布:melodyne mac汉化补丁 编辑:程序博客网 时间:2024/04/28 01:38

//////网上讲解很多我就不解释了

1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051
#include <cstdio>#define M 50005int p[3*M];int  find(int x){    int r = x;    while(p[r] != r)        r = p[r];    p[x] = r; //压缩路径    return r;}void unite(int x, int y){    int rx = find(x);    int ry = find(y);    if(rx != ry)        p[rx] = ry;}bool same(int x, int y){    return find(x) == find(y);}int main(){    int i, d, x, y, ans = 0;    int n, k;    scanf("%d%d",&n, &k);    for(i = 1; i <= 3*n; i++) p[i] = i;    for(i = 0;  i < k; i++){        scanf("%d%d%d",&d, &x, &y);        if(x < 1 || x > n || y < 1 || y > n) { ans++; continue;}        if(d == 1){            if(same(x, y+n) || same(x, y+2*n)) ans++;            else {                unite(x, y);                unite(x+n, y+n);                unite(x+2*n, y+2*n);            }        }        if(d == 2)        {            if(same(x,y) || same(x, y+2*n)) ans++;            else {                unite(x, y+n);                unite(x+n, y+2*n);                unite(x+2*n, y);            }        }    }    printf("%d\n",ans);}

0 0
原创粉丝点击