首页 > 其他 > 详细

食物链--poj1182

时间:2015-07-26 15:37:54      阅读:145      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=1182

 

题意应该就不用说了,关系之间的解释看大神的吧http://www.cnblogs.com/wuyiqi/archive/2011/08/24/come__in.html

 

#include<stdio.h>

const int maxn = 100005;

int f[maxn], r[maxn];//r[i]代表i与根节点之间的关系,0代表同类,1代表x吃y;2代表x被y吃;

int Find(int x)
{
    int k = f[x];
    if(f[x] != x)
    {
        f[x] = Find(f[x]);
        r[x] = (r[k]+r[x])%3;
    }

    return f[x];
}

int main()
{
    int i, N, T, ans=0;

    scanf("%d%d", &N, &T);

    for(i=0; i<=N; i++)
    {
        f[i] = i;
        r[i] = 0;
    }

    while(T--)
    {
        int x, y, d;

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

        int rx = Find(x), ry = Find(y);

        if(x>N || y>N || (d==2&&x==y) )
            ans++;
        else if(rx == ry && (r[y]+d-1)%3 != r[x])
            ans++;
        else if(rx != ry)
        {
            f[rx] = ry;
            r[rx] = ((d-1)-r[x]+r[y]+3)%3;
        }
    }

    printf("%d\n", ans);

    return 0;
}

 

食物链--poj1182

原文:http://www.cnblogs.com/zhengguiping--9876/p/4677668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!