卿学姐与诡异村庄(并查集)
C - 卿学姐与诡异村庄
Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
日复一日,年复一年,春去秋来。
卿学姐终于从天行廖那里毕业啦。出山的卿学姐首先来到了一个诡异的村庄。
在这个村庄中,只有两种人,一种是好人,一种是坏人。
好人只说真话,坏人只说假话。
村庄虚伪的平静由于卿学姐的到来,终于被打破了。
人们开始互相指控,每个人都会说另外一个人是否是好人。
卿学姐修行途中只学会了膜法,却不谙世事,所以卿学姐无法确认哪些人是好人,哪些人是坏人。
但是机智的卿学姐意识到可以通过这些人的指控来分辨。
现在告诉你村庄中每个人指控谁是否为好人,请问是否有个合理的分类能够符合所有的指控。
Input
第一行一个整数 N N,表示村庄总共有 N N个人,村民从 1 1开始编号到 N N
1≤N≤100000 1≤N≤100000
接下来 N N行,每行两个整数, ai,t ai,t,如果 t t是 1 1,那么说明第 i i个人认为第 ai ai个人是好人。如果 t t是 2 2,那么说明第 i i个人认为第 ai ai个人是坏人。
1≤ai≤N 1≤ai≤N
Output
如果存在一个好人坏人的分类能够满足所有的指控,那么输出"Time to show my power",否则输出"One face meng bi"
Sample input and output
Sample Input | Sample Output |
---|---|
3 2 2 3 1 1 2 |
Time to show my power |
3 2 2 3 2 1 2 |
One face meng bi |
Hint
第一组样例中,如果1是好人,2和3都是坏人,就能解释得通这些指控
黑色数字为说真话,红色数字为说假话。
第一样例:
第二样例:
看两张图就能够知道,如果存在不成立的情况,必然是有一个人自相矛盾的,所以只要假设1是说真话,则将1所说的值并起来,而且还要将1是说假话,将假话的值
的相反的值并起来。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<set>
using namespace std;
#define T 100000+50
#define inf 0x3f3f3f3f
typedef long long ll;int f[T<<1];void Init()
{for(int i=0;i<T;++i){f[i] = i;}
}int find(int x)
{int tmp = x;while(x!=f[x]){x = f[x];}while(tmp!=x){int t = f[tmp];f[tmp] = x;tmp = t;}return x;
}int main()
{
#ifdef zscfreopen("input.txt","r",stdin);
#endifint n,m,i,j,k;while(~scanf("%d",&n)){Init();int u,v;for(i=1;i<=n;++i){scanf("%d%d",&u,&v);if(v==1){int tx = find(u*2-1),ty=find(i*2-1);if(tx!=ty){f[tx] = ty;}tx = find(u*2),ty = find(i*2);if(tx!=ty){f[tx] = ty;}}else {int tx = find(u*2),ty=find(i*2-1);if(tx!=ty){f[tx] = ty;}tx = find(u*2-1),ty = find(i*2);if(tx!=ty){f[tx] = ty;}}}bool flag = false;for(i=1;i<=n;++i)if(find(i*2)==find(i*2-1)){flag = true;break;}if(flag)printf("One face meng bi\n");else printf("Time to show my power\n");}return 0;
}
卿学姐与诡异村庄(并查集)相关推荐
- cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- cdoj1344卿学姐种美丽的花
地址:http://acm.uestc.edu.cn/#/problem/show/1344 题目: 卿学姐种美丽的花 Time Limit: 8000/4000MS (Java/Others) ...
- D - 卿学姐与魔法
卿学姐与魔法 Time Limit: 1200/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...
- CDOJ 1292 卿学姐种花 暴力 分块 线段树
卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...
- CDOJ 1292 卿学姐种花(暴力,分块,线段树)
众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一样美丽的花.所以卿学姐家的后院有很多的花坛. 卿学姐有n 个花坛,一开始第 i个花坛里有 A[i] 朵花.每过一段时间,卿学姐都会在花坛 ...
- 卿学姐种花(线段树)
卿学姐种花 Time Limit: 0/7500MS (Java/Others) Memory Limit: 0/220000KB (Java/Others) 众所周知,在喵哈哈村,有一个温柔 ...
- 2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 树状数组+等差数列
O - 卿学姐种美丽的花 Time Limit: 8000/4000MS (Java/Others) Memory Limit: 125535/65535KB (Java/Others) Su ...
- A - 卿学姐与公主(线段树+单点更新+区间极值)
A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- 卿学姐与公主(线段树区间求最大值)
A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
最新文章
- 车辆检测--DAVE: A Unified Framework for Fast Vehicle Detection and Annotation
- 2016 - 1 - 19NSOpertation的依赖关系和监听
- 基于python实现opencv视频去抖动
- [MATLAB粒子模拟]Energy Vx(X) Vy(X) Vz(X)
- Greenplum【环境搭建 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
- 史上最详细之Centos7安装与配置Redis6
- DBGridEh使用指南
- MSSQL 'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。
- mysql 命令大小写_MySQL连接方式及大小写问题
- flume与log4j的整合
- Windows XP启用telnet服务图文教程
- html5小游戏抓包,wireshark抓包分析
- excel格式和csv格式的区别(关键差异)
- Treap树应用-bzoj 1862 GameZ游戏排名系统问题
- wince 百度地图懒人包_百度导航车载wince版|百度地图winCE版 V10.9.2 安卓版 下载_当下软件园_软件下载...
- Python开源项目合集(网页框架)
- oracle支持utf8字符集,AL32UTF8/UTF8(Unicode)数据库字符集含义
- 做视频自媒体,选择一个合适的剪辑软件很重要,这些或许适合你
- 我的世界服务器神秘修改节点,我的世界神秘节点指令 | 手游网游页游攻略大全...
- 学3d游戏建模要用到什么软件
热门文章
- 图书系统(查询图书内容)
- 自建idea授权服务器
- 【pytorch】 grad、grad_fn、requires_grad()、with torch.no_grad() 、net.train()、net.eval():记录一次奇怪的debug经历
- Nginx服务器支持.htaccess的方法
- 你真的会在阳光下拍照片么?
- 【分享Oracle练习二】
- WinDBG 技巧:列出模块(DLL/EXE)里面所有的符号(symbol)
- 构建栅格地图matlab代码
- 基于PHP+MySQL教务管理系统的设计与实现
- 基于STM32的RFID监控系统设计