<题目链接>

<转载于 >>> >

题目大意:

有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突。

解题分析:

(1)弄清题意,找出出现冲突的位置,判断冲突很简单就是当两个人在同一行坐,同时他们到根节点的距离差值正好是他们之间的差值,此时就出现了冲突了。

(2)关键有两个地方,这也是并查集题目的难点,就是压缩集合,和求节点到根的距离。这里压缩集合就很简单了,一个通用的递归。求到跟的距离dist[a] += dist[tem]; dist[rb]=dist[a]+x-dist[b];注意这两行代码,这是核心代码,首先第一行是求出节点a到根的距离。第二行代码使用的是数学中向量计算的原理如图

注意x是指b->a 

这道题我还是很不明白,为什么连

3 2

1 2 150

2 3 150

这组数据输出的都是0,我觉得应该是1.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int maxn=5e4+;
int n,m,ans; int fa[maxn];
int r[maxn]; int find(int x){
if(fa[x]==x)return x;
int temp=fa[x];
fa[x]=find(fa[x]);
r[x]=(r[x]+r[temp])%;
return fa[x];
} void Uion(int a,int b,int c){
int ra=find(a);
int rb=find(b);
if(ra==rb){
if((r[a]-r[b]+)%!=c)ans++; //这里意味着原来所确定a、b之间的关系与现在a、b给定的关系发生冲突,所以ans++
}
else{
fa[ra]=rb;
r[ra]=(c-r[a]+r[b]+)%; //矢量求解ra到rb的距离
}
} int main(){
while(scanf("%d %d",&n,&m)!=EOF){
for(int i=;i<=n;i++){
fa[i]=i;
r[i]=;
}
ans=;
for(int i=;i<=m;i++){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
Uion(a,b,c);
}
printf("%d\n",ans);
}
return ;
}

2018-08-14

最新文章

  1. 利用Python进行数据分析 基础系列随笔汇总
  2. Hadoop学习之旅一:Hello Hadoop
  3. for循环j = j++ 和 j = ++j
  4. acm 20140825
  5. zTree -- jQuery 树插件
  6. 201521123020 《Java程序设计》第6周学习总结
  7. spring boot hello world
  8. python 中的super()继承,搜索广度为先
  9. Manjaro下带供电的USB Hub提示error -71
  10. 【转】细说new与malloc的10点区别
  11. JCE cannot authenticate the provider BC
  12. topcoder srm 310 div1
  13. oracle查询语句查询增加一列内容
  14. CAJ Viewer安装流程以及CAJ或Pdf转换为Word格式
  15. list(range())--------range创建一个list列表 遍历索引range(len()) 和 list(range())创建列表
  16. php 输出带变量字符串(echo 函数的应用)
  17. hibernate的注解属性mappedBy详解【实际项目】
  18. 设置DevExpress GridControl控件时间列显示时、分、秒样式
  19. 0-Android使用Ashmem机制进行跨进程共享内存
  20. boost::noncopyable

热门文章

  1. 【洛谷P1052【NOIP2005提高T2】】过河
  2. iOS性能优化技巧
  3. Mybatis进阶学习笔记——关系查询——一对一查询
  4. Java中eclipse与命令行向main函数传递参数
  5. ICPC World Finals 2019 题解
  6. 机器学习编程语言之争,Python夺魁
  7. freeRTOS中文实用教程5--内存管理
  8. 初识CPU卡、SAM卡/CPU卡简介、SAM卡简介 【转】
  9. MyBatis返回Map键值对数据
  10. git命令行提交并且同步到远程代码库