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

    题意:给出多个区间的和,判断数据矛盾的区间有几个,比方说【1,5】 = 10 ,【6.10】 

    = 10, 【1, 10】 = 30,这明显第三个与前面两个矛盾。

    链接:点我

    水题了,val代表到根的和

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=200010;
    16 int n,m,tt;
    17 int ans=0;
    18 int f[MAXN];
    19 int val[MAXN];
    20 int find(int x)
    21 {
    22     if(f[x]==-1)    return x;
    23     int temp=find(f[x]);
    24     val[x]+=val[f[x]];
    25     return f[x]=temp;
    26 }
    27 void bing(int x,int y,int w)
    28 {
    29     int t1=find(x);
    30     int t2=find(y);
    31     if(t1!=t2)
    32     {
    33         f[t2]=t1;
    34         val[t2]=val[x]-val[y]+w;
    35     }
    36     else
    37     {
    38         if(val[y]-val[x]!=w)
    39         {
    40             ans++;
    41         }
    42     }
    43 }
    44 int main()
    45 {
    46     int i,j,k;
    47     #ifndef ONLINE_JUDGE
    48     freopen("1.in","r",stdin);
    49     #endif
    50     while(scanf("%d%d",&n,&m)!=EOF)
    51     {
    52         memset(f,-1,sizeof(f));
    53         memset(val,0,sizeof(val));
    54         ans=0;
    55         int u,v,w;
    56         for(i=0;i<m;i++)
    57         {
    58             scanf("%d%d%d",&u,&v,&w);
    59             u-=1;
    60             bing(u,v,w);
    61         }
    62         printf("%d
    ",ans);
    63     }
    64 }
  • 相关阅读:
    hdu 3832 Earth Hour
    hdu 2112 HDU Today
    hdu 2473 Junk-Mail Filter
    hdu 1558 Segment set
    5-2学习记录|5-3日
    看面经
    2020-5-1学习记录
    2020-4-30学习记录
    2020-4-27学习记录
    4.19日学习笔记
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4487103.html
Copyright © 2011-2022 走看看