BZOJ 1116: [POI2008]CLO [连通分量]】的更多相关文章

Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度 和上题一样... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std;…
1116: [POI2008]CLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 922  Solved: 514[Submit][Status][Discuss] Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度 Input 第一行输入n m.1 <= n<= 100…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1116 [题目大意] Byteotia城市有n个towns,m条双向roads.每条road连接两个不同的towns, 没有重复的road.你要把其中一些road变成单向边使得:每个town都有且只有一个入度 [题解] 我们发现当一个连通块边数大于等于其点数的时候就满足条件, 那么此题如果出现边数少于点数的连通块就不成立, 用并查集能够完成判断. [代码] #include <cstd…
成立时当且仅当每个联通块都有环存在.一个连通块若有m个点,则必有多于m条有向边,可用并查集来维护. #include<cstdio> #include<iostream> #define R register int #define pc(x) putchar(x) ; using namespace std; inline int g() { R ret=,fix=; register :fix; +(ch^); while(isdigit(ch=getchar())); ret…
1116: [POI2008]CLO https://lydsy.com/JudgeOnline/problem.php?id=1116 分析: 单独考虑每个联通块的情况. 设这个联通块里有n个点,那么至少有n-1条边了. 如果每个点入度都为1,那么就要求至少有n条边(其实就是基环树),大于n条边可以不选. 所以有:如果一个联通块是可行的,必须满足存在大于等于点数条边. 所以并查集维护加边的过程. 1.出现了环,那么这个联通块就合法了. 2.合并两个联通块,只要一个联通块里合法就行.(一个合法了…
如果一个连通块是一个树的形态,则不合法,否则合法. 用并查集判断一下即可. #include <bits/stdc++.h> #define N 100005 #define M 200005 #define setIO(s) freopen(s".in","r",stdin) using namespace std; struct G { int edges; int hd[N],to[M<<1],nex[M<<1]; void…
1116: [POI2008]CLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 565  Solved: 303[Submit][Status] Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度 Input 第一行输入n m.1 <= n<= 100000,1 <…
[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…
Bzoj 1131[POI2008]STA-Station (树形DP) 状态: 设\(f[i]\)为以\(i\)为根的深度之和,然后考虑从他父亲转移. 发现儿子的深度及其自己的深度\(-1\) 其余的\(+1\),记录一下\(size\)就ok了 转移: \(f[i] = f[fa] + n - 2 * size[i]\) 记忆化搜索即可. Bzoj 可能过不了,原因貌似是栈空间不足,可以去洛谷提交,我这里的解决方法是.记忆化搜索的时候用\(n\)作为开头.然后就过了. #include <i…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 点双连通分量缩点,然后各种各样. 结果不会写了.比如新连边.记录一个点是割点缩成的点还是一块缩成的点什么的. 然后去学习了TJ.其实根本不用把缩点后的图真的建出来嘛!而且人家写得好好!唉,代码能力? #include<iostream> #include<cstdio> #include<cstring> #define ll long long using…