hdu3038How Many Answers Are Wrong

来源:互联网 发布:软件开源有什么用 编辑:程序博客网 时间:2024/05/21 22:29
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int p[300005],w[300005];int n,m,a,b,c;void init(){for(int i=0;i<300005;i++){p[i]=i;w[i]=0;}}int find(int x){if(x==p[x]) return x;int tmp=find(p[x]);w[x]+=w[p[x]];p[x]=tmp;return p[x];}void combine(int a,int b){int t1=find(a);int t2=find(b);p[t2]=t1;w[t2]=w[a]-w[b]+c;}int main(){int i,j,k,sum,zhi;while(scanf("%d%d",&n,&m)!=EOF){sum=0;init();k=m;while(m--){scanf("%d%d%d",&a,&b,&c);a--;if(find(a)==find(b)&&(w[b]-w[a])!=c) sum++;elsecombine(a,b);}printf("%d\n",sum);}return 0;}

0 0
原创粉丝点击