hdu 3038

来源:互联网 发布:手机淘宝怎么加好友 编辑:程序博客网 时间:2024/06/03 14:44

并查集还可以判断集合间 的矛盾关系,贴代码,话说这个还挺常用的啊

#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;const int MAXN=200010;int F[MAXN];int val[MAXN];int find(int x){    if(F[x]==-1)return x;    int tmp=find(F[x]);    val[x]+=val[F[x]];    return F[x]=tmp;}int main(){    int n,m;    int u,v,w;    while(scanf("%d%d",&n,&m)==2)    {        memset(F,-1,sizeof(F));        memset(val,0,sizeof(val));        int ans=0;        while(m--)        {            scanf("%d%d%d",&u,&v,&w);            u=u-1;            int t1=find(u);            int t2=find(v);            if(t1!=t2)            {                F[t2]=t1;                val[t2]=val[u]-val[v]+w;            }            else            {                if(val[v]-val[u]!=w)ans++;            }        }        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击