HihoCoder 1638 : 小Hi的天平 (2-sat+并查集)
描述
小Hi给小Ho邮寄了一个天平。收到天平后,小Ho想知道天平在运输过程中是否损坏,为此它准备了A类物品和B类物品共n个(可能只有A类物品,也可能只有B类物品),但无法确定一个物品是哪一类。A类物品的质量都相同,B类物品的质量也相同,但A类物品与B类物品的质量不同。现将n个物品从1到n编号,用天平进行m次测量,每次从n个物品中取i和j两个物品,测量后可以知道物品i和物品j质量是否相同。
现在小Ho想知道能否根据测量结果判定天平是坏的,如果能确定,最早是第几次测量确定的,你能帮帮他吗?
输入
第一行一个数字T,代表数据组数。1<=T<=5。
对于每组数据:
第一行两个整数n,m,分别代表A类、B类物品的总数和测量次数。2<=n<=10000,1<=m<=300000。
接下来m行,每行三个数字x,u,v。x=0代表物品u与物品v质量相等,x=1代表质量不等。
输出
对于每组数据:
若不能确定天平是坏的,则输出一行“great”。
否则,输出两行。
第一行输出“sad”。
第二行输出一个数字p,代表最早第p次测量确定了天平是坏的。
- 样例输入
-
1
2 2
0 1 2
1 1 2 - 样例输出
-
sad
2
思路:对于每一个物品i,我们可以假设i是R色,则i+n是B色,然后2-sat验证。但是这样的话二分m不方便。我们要在线做。
所以改用并查集来实现:对于每一个关系,如果相同,则合并 u和v,u+n和v+n;否则合并u和v+n,v+u+n,直到出现矛盾。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<string>
const int maxn=;
using namespace std;
int m,n,x,u,v;
int flag=;
int par[maxn],rnk[maxn];
void init( int n )
{
for (int i=;i<=n;i++){
par[i]=i;
rnk[i]=;
}
}
int find( int x )
{
return x==par[x]?x:find(par[x]);
}
void unite( int x, int y )
{
x=find(x);
y=find(y);
if(x==y) return;
if(rnk[x]<rnk[y]) par[x]=y;
else{
par[y]=x;
if (rnk[x]==rnk[y]) rnk[x] ++;
}
}
bool same( int x, int y )
{
return find(x)==find(y);
}
int main()
{
int T;
scanf("%d",&T );
while (T--){
scanf("%d%d",&n,&m );
init(n*+);
flag=;
for(int i=;i<=m;++i){
scanf("%d%d%d",&x,&u,&v );
if (flag){
if(x==){
if(same(u,v+n)){
puts("sad");
printf("%d\n",i);
flag = ;
}
else{
unite(u,v);
unite(v+n,u+n);
}
}
else{
if (same(u,v)||same(u+n,v+n)){
puts("sad");
printf( "%d\n",i);
flag = ;
}
else{
unite(u,v+n);
unite(u+n,v);
}
}
}
}
if (flag) puts("great");
}
return ;
}
HihoCoder 1638 : 小Hi的天平 (2-sat+并查集)的更多相关文章
- acdream 1725 哗啦啦的小彭玉染色问题 离散化并查集
哗啦啦的小彭玉染色问题 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1725 Descri ...
- ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)
http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...
- HihoCoder第十四周:无间道之并查集
#1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之,小Hi和小H ...
- 【牛客】小w的魔术扑克 (并查集?? 树状数组)
题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ...
- 【hihoCoder第十四周】无间道之并查集
就是基础的并查集.0代表合并操作,1代表查询操作.一开始以为会卡路径压缩,忐忑的交了一版裸并查集,结果AC了.数据还是很水的. 以后坚持做hiho,当额外的练习啦~ #include <bits ...
- P5631-最小mex生成树【线段树,并查集】
正题 题目链接:https://www.luogu.com.cn/problem/P5631 题目大意 \(n\)个点\(m\)条边的一张图,求\(mex\)值最小的一棵生成树. 解题思路 考虑比较暴 ...
- hihocoder#1513 : 小Hi的烦恼 bitset
目录 题目链接 题解 代码 题目链接 hihocoder#1513 : 小Hi的烦恼 题解 cdq 套cdq 套cdq 套cdq就完了呀 对每一科开n个bitset 表示该科目前i个有谁 每次查询都& ...
- 浙江工业大学校赛 小M和天平
小M和天平 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hihoCoder 1513 小Hi的烦恼
hihoCoder 1513 小Hi的烦恼 思路: 用bitset判断交集个数 代码: #include<bits/stdc++.h> using namespace std; #defi ...
随机推荐
- [Algorithms] Queue & Priority Queue
In this lesson, you will learn how to create a queue in JavaScript. A queue is a first-in, first-out ...
- vue2.0 + vux (二)Footer组件
1.Footer组件 Footer.vue <!-- 底部 footer --> <template> <div> <tabbar> <!-- 综 ...
- 监控系统-nagios
Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设备,打印机等.在系统或服务状态异常发出邮件或短信报警第一 ...
- iOS 7 中 StoryBoard 总体缩放
iOS 7 中 StoryBoard 总体缩放 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...
- 通过代码实现自动判断是手机端还是PC端跳转
<!-- 2017/09/13 跳转手机页面 start by 小鬼PSer --> <meta name="mobile-agent" content=&quo ...
- 【TensorFlow-windows】(二) 实现一个去噪自编码器
主要内容: 1.自编码器的TensorFlow实现代码(详细代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_6 ...
- 开源无广告输入法Rime
最近在看别人的博客的时候,看到别人推荐一种开源的输入法Rime.然后就下载下来一用,果然给力啊,没有广告,没有插件,很干净的输入法.比其他输入法强太多.废话少说,下面是链接https://code.g ...
- ASP.NET MVC EXTJS 通用主菜单框架
一.说明 首先我不知道定义的文章标题是不是准确,我这篇博文介绍的是一个通用的软件主菜单框架,界面布局用的是extjs,还是先上一个图吧. 软件主界面左侧菜单采用的风格是extjs的手风琴模式,需要注意 ...
- ubuntun16.04不支持intel的最新网卡,升级到17.10后解决
新买的神舟战神电脑.装了ubuntu16.04版本.但是安装后无线网卡无法使用无线网卡型号:是intel的一款网卡02:00.0 Network controller [0280]: Intel Co ...
- ZFIND_ENHANCEMENT(找增强点-新)
REPORT ZFIND_ENHANCEMENT. *&-------------------------------------------------------------------- ...