题意:有一个环形体育场,有n个人坐,给出m个位置关系,A B x表示B所在的列在A的顺时针方向的第x个,在哪一行无所谓,因为假设行有无穷个。

  给出的座位安排中可能有与前面矛盾的,求有矛盾冲突的个数。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm> using namespace std;
const int maxn=;
int n,m,r;
int father[maxn];
int pos[maxn];//pos[i]表示i相对根节点的位置(始终大于0的,顺时针方向) void init(){
for(int i=;i<=n;i++){
father[i]=i;
pos[i]=;
}
}
//查找父节点的时候,同步更新子节点相对更节点的位置
int find_root(int x){
if(father[x]==x)
return x;
int fa=father[x];
father[x]=find_root(father[x]);
pos[x]=(pos[x]+pos[fa])%;
return father[x];
} void Union(int fa,int fb){
father[fb]=fa;
}
int main()
{
int a,b,x;
while(scanf("%d%d",&n,&m)!=EOF){
r=;
init();
for(int i=;i<=m;i++){
scanf("%d%d%d",&a,&b,&x);
int fa=find_root(a);
int fb=find_root(b);
if(fa!=fb){
Union(fa,fb);
/*
b相对a的顺时针位置为x,b相对父节点fb的位置为pos[b],则fb相对b的位置为-pos[b],
a相对父节点fa的位置为pos[a]。
fb相对a的位置为-pos[b]+x,fb相对fa的位置即为(-pos[b]+a+pos[a],
这里为防止出现负数,加了300
*/
pos[fb]=(x-pos[b]+pos[a]+)%;
}
else{
/*
b相对于a的位置
设a、b的根节点为f,则相对a的位置为-pos[a],b相对f的位置为pos[b],
则b相对a的位置为(-pos[a]+pos[b]),这里同样为防止出现负数,加了300
*/
int t=(-pos[a]+pos[b]+)%;
if(t!=x){
r++;
}
}
}
printf("%d\n",r);
}
return ;
}

  

HDU 3047 Zjnu Stadium(带权并查集)的更多相关文章

  1. hdu 3047–Zjnu Stadium(带权并查集)

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

  2. Hdu 2047 Zjnu Stadium(带权并查集)

    Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. hdu 3047 Zjnu Stadium(加权并查集)2009 Multi-University Training Contest 14

    题意: 有一个运动场,运动场的坐席是环形的,有1~300共300列座位,每列按有无限个座位计算T_T. 输入: 有多组输入样例,每组样例首行包含两个正整数n, m.分别表示共有n个人,m次操作. 接下 ...

  4. HDU3047 Zjnu Stadium 带权并查集

    转:http://blog.csdn.net/shuangde800/article/details/7983965 #include <cstdio> #include <cstr ...

  5. hdu 5441 Travel 离线带权并查集

    Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...

  6. How Many Answers Are Wrong (HDU - 3038)(带权并查集)

    题目链接 并查集是用来对集合合并查询的一种数据结构,或者判断是不是一个集合,本题是给你一系列区间和,判断给出的区间中有几个是不合法的. 思考: 1.如何建立区间之间的联系 2.如何发现悖论 首先是如何 ...

  7. hdu 5441 travel 离线+带权并查集

    Time Limit: 1500/1000 MS (Java/Others)  Memory Limit: 131072/131072 K (Java/Others) Problem Descript ...

  8. hdu 2818 Building Block (带权并查集,很优美的题目)

    Problem Description John are playing with blocks. There are N blocks ( <= N <= ) numbered ...N ...

  9. hdu 3635 Dragon Balls (带权并查集)

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

随机推荐

  1. Codevs 1039 :数的划分

    总时间限制: 1000ms 内存限制:  65536kB 描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5: 1 ...

  2. [windows phone开发]新生助手的开发过程与体会二

    上一讲咱们谈了新生助手主页的基本的设计,今天我们谈一谈关于展现实景地图时等动画的设计,即Storyboard的应用. 在Windows phone中,Storyboard类表示通过时间线控制动画,并为 ...

  3. webstorm 自定义代码模板

    Ctrl+Shift+A查找设置live 添加代码片段Live Template 编写代码的时候 缩写+Tab 即可输出代码片段 缩写启动对应代码片段的钥匙. 描述代码片段的名字. 模板文本代码片段的 ...

  4. js实现模拟自动点击按钮,并且在10秒倒计时之后疯狂点击

    需求来自于csdn问答,可以利用这个原理做秒杀抢单外挂. 代码示例如下: <html> <head> <meta charset="utf-8"/&g ...

  5. SequoiaDB数据库的一般概念介绍

    SequoiaDB数据库的主要对象包括文档.集合.集合空间与索引等. 文档 SequoiaDB中的文档为JSON格式,一般又被称为记录.在数据库内部使用BSON,即二进制的方式存放JSON数据.一般情 ...

  6. php读取excel文件的实例代码

    php读取excel文件的实例代码. 代码: <?php /** * php读取excel文件 * by www.jbxue.com */ $this->loadexcel();//半酣p ...

  7. PHP 登录完成后如何跳转上一访问页面

    访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面 项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要 ...

  8. delphi下,不错的多语言翻译组件

    http://yktoo.com/en/software/dklangTraned http://sourceforge.net/projects/dklang/

  9. Linq to Entities

    首先要添加一个ADO.NET实体数据模型 添加一个Entities 对象,其用法和linqtosql类似例如: StudentInfoEntities2 entity = new StudentInf ...

  10. selenium-webdriver用例批量运行和测试套件使用 ------之我见

    用例批量运行和测试套件使用 ------之我见 学习selenium-webdriver已经一段时间了,最近学习到,测试用例的批量执行,和测试套件的使用,有点自己的理解,不晓得对不对,希望大家指正! ...