• poj 食物链 种类并查集


    wa 还没找出哪里的错误 先放这里

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<cstdlib>
    #include<queue>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    
    int n,m;
    struct node
    {
        int f,k;
    } p[50002];
    
    int find1(int x)   //
    {
        if(p[x].f==x)
        {
            p[x].k=0;
            return p[x].f=x;
        }
       int fa=find1(p[x].f);
        p[x].k=(p[x].k+p[p[x].f].k)%3;
        return p[x].f=fa;
    
    }
    
    int main()
    {
        int z,a,b;
        while(~scanf("%d%d",&n,&m))
        {
            for(int i=1; i<=n; i++) // 0相同 1根吃x  2 x吃根
            {
                p[i].f=i;
                p[i].k=0;
            }
            int ans=0;//假话种类数
            while(m--)
            {
                scanf("%d%d%d",&z,&a,&b);
                if(a>n || b>n ||(a==b && z==2))
                    ans++;
                else
                {
                    int aa=find1(a);
                    int bb=find1(b);
                    if(aa==bb)
                    {
                        if((p[b].k-p[a].k+3)%3!=(z-1))
                            ans++;
    
                    }
                    else
                    {
                        p[bb].f=aa;
                        p[bb].k=(p[a].k-p[b].k+z2)%3;
                    }
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    FM
    GBDT+LR
    推荐系统架构设计
    DSSM双塔模型
    git
  • 原文地址:https://www.cnblogs.com/assult/p/3662090.html
Copyright © 2020-2023  润新知