博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3038 How Many Answers Are Wrong(并查集)
阅读量:5235 次
发布时间:2019-06-14

本文共 933 字,大约阅读时间需要 3 分钟。

题意:

N和M。有N个数。

M个回答:ai, bi, si。代表:sum(ai...bi)=si。如果这个回答和之前的冲突,则这个回答是假的。

问:M个回答中有几个是错误的。

 

思路:

如果知道sum(ai...bi)=si。假设下一个是sum(ai,ci)=sj。则sum(ai,ci)肯定也知道了。这很符合并查集的结构。

*:画个图。

 

代码:

int n,m;int fa[200005];int sum[200005];int findFa(int x){    if(fa[x]==x){        return fa[x];    }    int t=fa[x];    fa[x]=findFa(fa[x]);    sum[x]+=sum[t];    return fa[x];}int main(){    while(scanf("%d%d",&n,&m)!=EOF){        rep(i,0,n){            fa[i]=i;            sum[i]=0;        }        int ans=0;        while(m--){            int A,B,S;            scanf("%d%d%d",&A,&B,&S);            int fA=findFa(A-1);            int fB=findFa(B);            if(fA!=fB){                fa[fB]=fA;                sum[fB]+=(sum[A-1]+S-sum[B]);            }else{                if(sum[A-1]+S!=sum[B]){                    ++ans;                }            }        }        printf("%d\n",ans);    }    return 0;}

 

转载于:https://www.cnblogs.com/fish7/p/4332623.html

你可能感兴趣的文章
自己到底要的是什么
查看>>
Kruskal基础最小生成树
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>
SSH框架整合总结
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>