zoukankan      html  css  js  c++  java
  • hdu 3038 并查集

    题目:给出一些询问,[l,r]的和为s,问有多少个是错的

     1 //并查集 ,,sum[a]表示a与父亲这条路径上的和
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 const int maxn = 2e5 + 5;
    10 int fa[maxn], sum[maxn];
    11 int n, m, l, r, s;
    12 int findFa(int x){
    13     if (x != fa[x]){
    14         int t = fa[x];
    15         fa[x] = findFa(fa[x]);
    16         sum[x] += sum[t];
    17     }
    18     return fa[x];
    19 }
    20 int main(){
    21     while (~scanf("%d%d", &n, &m)){
    22         for (int i = 0; i <= n; ++i){
    23             fa[i] = i;
    24             sum[i] = 0;
    25         }
    26         int ans = 0;
    27         while (m--){
    28             scanf("%d%d%d", &l, &r, &s);
    29             l --;
    30             int pa = findFa(l), pb = findFa(r);
    31             if (pa == pb){
    32                 if (sum[r] - sum[l] != s) ans++;
    33             }
    34             else {
    35                 fa[pb] = pa;
    36                 sum[pb] = sum[l] - sum[r] + s;
    37             }
    38         }
    39         printf("%d
    ", ans);
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    js/css 伪类, 获取伪类样式
    JS 盒子模型
    python坑之input获取字符串
    configpraser模块
    类的特殊成员&反射&异常处理
    面向对象
    员工信息表
    re正则表达式
    PyCharm教程
    递归实现jsonTree
  • 原文地址:https://www.cnblogs.com/Missa/p/3416617.html
Copyright © 2011-2022 走看看