• 食物链


    这次做食物链这个题目感觉真的好懵逼,先总结出现的错误,第一个是没有注意输入形式和输出格式,直接以为输入0 0就会结束,然后又是属于输入多组数据,但是题目并没有给出这样的提示,所以wa很正常,然后就是超时,想了一下昨天有人提到把cin改成scanf就AC了,所以我也试了一下;果然AC了,真的不容易啊。然后谈一下我做这个题目的各种懵逼,最开始连题目没看懂,感觉我就没有看懂几道题目过,然后条件2和3都很好理解,一就不同了,是指和前面的有出入,就有一个为假,我居然想去知道谁真谁假,这就不可能做出来了,手动再见。但是这个条件一就是要让我们用并查集了,真为一颗树 ,假为一棵树,然后find 函数,在判断吃与被吃关系就只能参考别人的代码了,因为这里真的好懵逼。所以我也不讲解什么,继续贴网址。

    http://blog.csdn.net/niushuai666/article/details/6981689

    #include<cstdio>
    using namespace std;
    struct node{
    int fa,r;
    }p[50010];
    int find(int x)
    {
        int temp;
        if(x==p[x].fa)
            return x;
        temp=p[x].fa;
        p[x].fa=find(temp);
        p[x].r=(p[x].r+p[temp].r)%3;
        return p[x].fa;
    }
    int main()
    {
        int n,m,num=0;int r1,r2;
        scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)
        {
            p[i].fa=i;
            p[i].r=0;
        }
            for(int i=0;i<m;i++)
            {
                int d,x,y;
                scanf("%d%d%d",&d,&x,&y);
                if(d==2&&x==y)
                    {num++;continue;}
                if(x>n||y>n) {num++;continue;}
                r1=find(x);r2=find(y);
                if(r1!=r2)
                {
                    p[r2].fa=r1;
                    p[r2].r=(3+(d-1)+p[x].r-p[y].r)%3;
                }
                else
                {
                    if(d==1&&p[x].r!=p[y].r)
                    {
    
                        num++;
                        continue;
                    }
                    if(d==2&&((3-p[x].r+p[y].r)%3!=d-1))
                    {
                        num++;
                        continue;
                    }
                }
            }printf("%d",num);
        return 0;
    }
    

      

  • 相关阅读:
    transition
    Java自增陷阱
    不同编码格式中,字节和字符的关系
    表单重复提交
    source folder和package的区别
    @test 测试案例不能添加参数
    http协议content-type
    jdbc的缺点和mybatis的优点
    ==和equals的区别
    spring IOC和AOP
  • 原文地址:https://www.cnblogs.com/yintoki/p/5691117.html
Copyright © 2020-2023  润新知