【BZOJ1116】[POI2008]CLO 并查集
【BZOJ1116】[POI2008]CLO
Description
Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度
Input
第一行输入n m.1 <= n<= 100000,1 <= m <= 200000 下面M行用于描述M条边.
Output
TAK或者NIE 常做POI的同学,应该知道这两个单词的了...
Sample Input
1 2
2 3
1 3
3 4
1 4
Sample Output

上图给出了一种连接方式.
题解:题意——无向边不算入度!!
所以在一个连通块内,只要存在环,就一定能使这个连通块内的所有点都有一个入度,否则不能
如果一个连通块内边数≥点数,就说明一定存在环(也可以直接打个标记~)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
const int maxn=100010;
int n,m;
int f[maxn],sv[maxn],se[maxn];
int find(int x)
{
return (f[x]==x)?x:(f[x]=find(f[x]));
}
int main()
{
scanf("%d%d",&n,&m);
int i,j,a,b;
for(i=1;i<=n;i++) f[i]=i,sv[i]=1;
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
if(find(a)!=find(b))
{
se[f[b]]+=se[f[a]],sv[f[b]]+=sv[f[a]],f[f[a]]=f[b];
}
se[f[b]]++;
}
for(i=1;i<=n;i++)
{
if(find(i)==i&&sv[i]>se[i])
{
printf("NIE");
return 0;
}
}
printf("TAK");
return 0;
}
【BZOJ1116】[POI2008]CLO 并查集的更多相关文章
- BZOJ1116:[POI2008]CLO(并查集)
Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个t ...
- bzoj1116 [POI2008]CLO——并查集找环
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1116 分析性质,只要有环,那么给环定一下向就满足了条件: 环上点的其他边可以指向外面,所以两 ...
- BZOJ 1116: [POI2008]CLO 并查集
成立时当且仅当每个联通块都有环存在.一个连通块若有m个点,则必有多于m条有向边,可用并查集来维护. #include<cstdio> #include<iostream> #d ...
- [BZOJ1116]CLO[并查集]
看了样例突然发现= =无向边不会增加入度. 然后发现是环套环. 一个环所有点入度都为2. 最后的图无视所有无向边的话大概是这样的(将就一下 然后就可以并查集维护一下联通性... 当x , y属于一个联 ...
- BZOJ1116: [POI2008]CLO
1116: [POI2008]CLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 565 Solved: 303[Submit][Status] ...
- BZOJ 1116 [POI2008]CLO-Toll 并查集
如果一个连通块是一个树的形态,则不合法,否则合法. 用并查集判断一下即可. #include <bits/stdc++.h> #define N 100005 #define M 2000 ...
- bzoj1116 [POI2008]CLO 边双联通分量
只需对每个联通块的$dfs$树检查有没有返租边即可 复杂度$O(n + m)$ #include <cstdio> #include <cstring> using names ...
- [BZOJ1116][Poi2008]LCO(并查集)
题目:http://hzwer.com/3010.html 分析:注意这里无向边是对入度没有贡献的. 那么对于一个n个点的连通块而言,如果它是一颗树(n-1条边),那么把所有边全部从某个根开始向下指, ...
- BZOJ 1116 [POI2008]CLO(并查集)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1116 [题目大意] Byteotia城市有n个towns,m条双向roads.每条ro ...
随机推荐
- DataGridView添加右键菜单等技巧
1). 添加一个快捷菜单contextMenuStrip1:2). 给dataGridView1的CellMouseDown事件添加处理程序: 程序代码 private void DataGridV ...
- RFID UHF(EPC)标签使用常识
文章复制来的,原作者原文点击这里 现在做UHF应用的越来越多了,如何根据实际应用设计系统以达到更佳的使用效果,其中对UHF标签相关内容的了解至关重要,很多朋友对标签的了解不多,在此不才,整理了一些资料 ...
- jQuery MiniUI自定义单元格
监听处理"drawcell"事件 使用"drawcell"事件,可以自定义单元格内容.样式.行样式等. grid.on("drawcell" ...
- 从JSON数据中取出相关数据
参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html JSON数据如下: { "total": 1, "rows& ...
- C while循环的自增和自减
自增和自减 --i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值.i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作. 实例一: #include &qu ...
- 3-06. 表达式转换(25)(中缀表达式转后缀表达式ZJU_PAT)
题目链接:http://pat.zju.edu.cn/contests/ds/3-06 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式. 日常使用的算术表达式是採用中缀表示法,即二元运算符位于两 ...
- vim如何选择ESC的键位绑定
vim除了hijk之外,按键频率最高的大概是Esc,本人已经有点Esc强迫症的兆头了.默认的Esc键远在边陲,按起来也忒麻烦了.怎么解决? 在google大神的帮助下,找到了两个方案: CapsLoc ...
- DelphiXE8FMX工程实现无边框托动(FMX内部方法)
注意: 可以实现效果,但不知道我的用法对不对(或着说是不是最优化的用法),望高手们指教. 实例代码: unit Unit1; interface uses System.SysUtils, Syste ...
- 如何在iOS上实现对HTTPS的支持(转)
原文地址:http://blog.5ibc.net/p/101504.html 首先,需要明确你使用HTTP/HTTPS的用途,因为OSX和iOS平台提供了多种API,来支持不同的用途,官方文档< ...
- WebService或HTTP服务端接收请求转发消息到另一个服务端-实现思路
1.需求结构(WebService) A客户端<->B服务端<->C服务端 说明: a.在B服务端上面添加配置项(1.是否转发消息到C服务端:2.C服务端IP和端口): b.A ...