zoukankan      html  css  js  c++  java
  • HDU 3038 How Many Answers Are Wrong

    传送门:

     

    解题思路:

    这是一道并查集的题,用了一点向量的知识进行和并。

    推荐:http://www.cnblogs.com/liyinggang/p/5327055.html

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    const int maxn=200000+10;
    int f[maxn],r[maxn];
    
    int findfa(int x){
        if(f[x]==x)
            return x;
        int t=f[x];
        f[x]=findfa(f[x]);
        r[x]=r[t]+r[x];
        return f[x];
    }
    
    void unit(int x,int y,int w){
        int fx=findfa(f[x]);
        int fy=findfa(f[y]);
    
        if(fx==fy) return;
        else{
            f[fy]=fx;
            r[fy]=r[x]+w-r[y];
        }
    }
    
    void init(int n){
        for(int i=0;i<=n;i++){
            f[i]=i;
            r[i]=0;
        }
    }
    
    int main(){
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF){
        init(n);
        int ans=0;
        while(m--){
            int x,y,w;
            scanf("%d%d%d",&x,&y,&w);
            x--;
            if(findfa(x)==findfa(y)){
                if((r[y]-r[x])!=w) ans++;
            }else unit(x,y,w);
        }
        printf("%d
    ",ans);
        }
    }
    自己选的路,跪着也要把它走完------ACM坑
  • 相关阅读:
    KMP
    1. Android Studio阅读源码
    疑难杂症
    队列
    方法和数组
    基本语法
    MySQL数据库创建
    MySQL安装
    Python--爬虫之(斗图啦网站)图片爬取
    Linux网络编程之基础概念
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6496359.html
Copyright © 2011-2022 走看看