• bzoj1202 [HNOI2005]狡猾的商人


    昨天宛如一个傻子...(居然机房rank2??)做个珂谷公开赛,结果遇到了貌似很高深的带权并查集,然后一早上心血来潮就想学:百度一下,诶,食物链?我好像A了,bzoj1202?好像在哪里见过?哦,原来是个sb算法(莫非以前学过?)

    这道题就是维护一个d数组记录月份到父亲节点的距离就行了

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int fa[110],d[110];
    int findfa(int x)
    {
        if(x!=fa[x])
        {
            int t=findfa(fa[x]);
            d[x]+=d[fa[x]];
            fa[x]=t;
        }
        return fa[x];
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,m,x,y,c;
            scanf("%d%d",&n,&m);
            for(int i=0;i<=n;i++)fa[i]=i, d[i]=0;
            
            bool bk=true;
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d",&x,&y,&c);x--;
                int fx=findfa(x),fy=findfa(y);
                if(fx!=fy)
                {
                    d[fx]=d[y]-d[x]-c;
                    fa[fx]=fy;
                }
                else
                {
                    if(d[y]-d[x]!=c)bk=false;
                }
            }
            if(bk==true)printf("true
    ");
            else printf("false
    ");
        }
        return 0;
    }
  • 相关阅读:
    string类
    拓扑排序 图
    麦森数,高精度快速幂
    排列
    牛客练习赛28 B 数据结构
    牛客练习赛27 C-水图
    组合数
    树状数组
    k短路模板+例题
    Supreme Number(找规律,打表)
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/7770508.html
Copyright © 2020-2023  润新知