zoukankan      html  css  js  c++  java
  • POJ 1182 食物链

    传送门:

    解题思路:

    一个带权的并查集。

    推荐博客:http://blog.csdn.net/niushuai666/article/details/6981689

    实现代码:

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    
    const int maxn=50000+10;
    int p[maxn],r[maxn];
    
    int findfa(int x){
        if(x==p[x]) return x;
    
        int t=p[x];
        p[x]=findfa(p[x]);
        r[x]=(r[x]+r[t])%3;
        return p[x];
    }
    
    void unit(int x,int y,int d){
        int fx=findfa(x);
        int fy=findfa(y);
    
        if(fx==fy) return;
    
        p[fy]=fx;
        r[fy]=(r[x]+d+3-r[y])%3;
    }
    
    void init(int n){
        for(int i=0;i<=n;i++){
            p[i]=i;
            r[i]=0;
        }
    
    }
    
    int main(){
        int N,K;
        scanf("%d%d",&N,&K);
        init(N);
    
        int ans=0;
        while(K--){
            int d,x,y;
            scanf("%d%d%d",&d,&x,&y);
    
            if(x>N||y>N){
                ans++;
                continue;
            }
    
            if(d==2&&x==y){
                ans++;
                continue;
            }
    
            int fx=findfa(x);
            int fy=findfa(y);
            if(fx!=fy){
                unit(x,y,d-1);
            }else{
                if(d==1&&r[x]!=r[y]){
                    ans++;
                    continue;
                }
    
                if(d==2&&(r[y]+3-r[x])%3!=d-1){
                    ans++;
                    continue;
                }
            }
    
        }
        printf("%d
    ",ans++);
    }
    自己选的路,跪着也要把它走完------ACM坑
  • 相关阅读:
    crash收集上报方案
    keychain的使用
    自定义Xcode文件模板
    iOS实现一个简单的扫码功能
    tableView渲染延迟
    iOS app icons
    fastlane自动打包
    iOS pod封装和升级
    手写代码 -- 数组扁平化
    手写代码 -- Promise
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6500636.html
Copyright © 2011-2022 走看看