[BZOJ 4436][Cerc2015]Kernel Knights
[Cerc2015]Kernel Knights
Time Limit: 2 Sec Memory Limit: 512 MB
Submit: 5 Solved: 4
[Submit][Status][Discuss]
Description
“Jousting”是一种让骑士在高速骑行中用木制长矛相互攻击对方的中世纪竞技游戏。现在,一共有2n个骑士进入一场“Jousting”锦标赛。骑士们被平均分配到2个house。竞赛开始时,所有骑士都会对另一个house的骑士之一发起挑战。
一组解被定义为一个集合S满足:
• S中的骑士不存在相互挑战。
• 所有不在S中的骑士都被S中的骑士挑战。
现给出官方公布的挑战场次,找出一组解。
数据保证有解。
Input
第一行包括一个整数n(1<=n<=100000)——每个house的骑士数。第一个house的骑士编号为1~n,第二个house的骑士编号为n+1~2n。
接下来一行包含n个整数f1,f2,…,fn——fk指第k名骑士发起的挑战。
最后一行包含n个整数s1,s2,…,sn——sk指第n+k名骑士发起的挑战。
(1<=fk,sk<=n)
Output
在一行中输出S中骑士的编号。
如果数据存在多组解,你只需任意输出一组。
Sample Input
4
5 6 7 7
1 3 2 3
Sample Output
1 2 4 8
HINT 请不要提交,期待SPJ
因为原图是二分图,所以所有的环都是偶环
因为每个点只有一个出度,所以所有的环都是简单环。
那么这个图可以想象成一个内向基环森林
每次给度为0的节点染色。每遍历到一个点度--
如果将要到达的点度为0或者它的颜色为不可选(因为此点不可选所以不能随便染色),那么继续遍历(博主语死早。。大家自行画图吧。。)
然后把所有没有标记的环搞一遍就可以了
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define maxn 500010
using namespace std;
int n;
int to[maxn], h[maxn], cnt, deg[maxn], col[maxn];
void add(int u, int v){to[u] = v, deg[v] ++;} void BFS(int u){
col[u] = 2;
while(true){
if(col[to[u]])break;
deg[to[u]] --;
if(deg[to[u]] == 0 || col[u] == 2){
col[to[u]] = col[u] ^ 1;
u = to[u];
}
else break;
}
} void Col(int u){
col[u] = 2;
while(true){
if(col[to[u]])break;
col[to[u]] = col[u] ^ 1;
u = to[u];
}
} int main(){
scanf("%d", &n);
int v;
for(int i = 1; i <= n; i ++)
scanf("%d", &v), add(i, v); for(int i = n + 1; i <= n * 2; i ++)
scanf("%d", &v), add(i, v);
n <<= 1;
for(int i = 1; i <= n; i ++)
if(!deg[i] && !col[i])BFS(i);
for(int i = 1; i <= n; i ++)
if(!col[i])Col(i);
for(int i = 1; i <= n; i ++)
if(col[i] == 2)printf("%d ", i);
return 0;
}
[BZOJ 4436][Cerc2015]Kernel Knights的更多相关文章
- UVALive 7334 Kernel Knights (dfs)
Kernel Knights 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/K Description Jousting is ...
- 【UVALive 7334】Kernel Knights
题 题意 有两个队的骑士1到n和n+1到2n,每个骑士只能互相攻击对手队的一个骑士.kernel的意思是在这个kernel里的骑士不会互相攻击,在kernel外的骑士被kernel里的骑士攻击. 现在 ...
- BZOJ 4421: [Cerc2015] Digit Division
4421: [Cerc2015] Digit Division Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 348 Solved: 202[Subm ...
- bzoj 4451 : [Cerc2015]Frightful Formula FFT
4451: [Cerc2015]Frightful Formula Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 177 Solved: 57[Sub ...
- BZOJ 4421: [Cerc2015] Digit Division 排列组合
4421: [Cerc2015] Digit Division 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4421 Descripti ...
- BZOJ 1671: [Usaco2005 Dec]Knights of Ni 骑士 (bfs)
题目: https://www.lydsy.com/JudgeOnline/problem.php?id=1671 题解: 按题意分别从贝茜和骑士bfs然后meet_in_middle.. 把一个逗号 ...
- BZOJ 4435 [Cerc2015]Juice Junctions 分治最小割+hash
分治最小割的题目,要求n2. 之前用的n3的方法自然不能用了. 于是用hash,设hash[i][j]表示在最小割为i的时候,j是否与S联通. 看懂这个需要理解一下最小割树的构造. 这种题建议用EK写 ...
- bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士【bfs】
bfs预处理出每个点s和t的距离d1和d2(无法到达标为inf),然后在若干灌木丛格子(x,y)里取min(d1[x][y]+d2[x][y]) /* 0:贝茜可以通过的空地 1:由于各种原因而不可通 ...
- Kernel Knights (Gym - 101480K)
题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; int a[200005]; //存放原始 ...
随机推荐
- Android 云服务器的搭建和友盟APP自动更新功能的实现
setContentView(R.layout.activity_splash); //Bmob SDK初始化--只需要这一段代码即可完成初始化 //请到Bmob官网(http://www.bmob. ...
- qq空间答案
2073693795 懂得人自然会懂
- Reverse Pairs
For an array A, if i < j, and A [i] > A [j], called (A [i], A [j]) is a reverse pair.return to ...
- (转)SQL server 容易让人误解的问题之 聚集表的物理顺序问题
对于MS SQL server 数据库,有几个容易让人产生误解的问题,对于这几个问题,即使很多 SQL server DBA 都有错误认识或者认识不充分,所以我想撰文几篇,把这些容易理解错误的问题前前 ...
- C#/Java/C/C++基本类型所占大小及表示范围
C/C++的数据类型: 一,整型 Turbo C: [signed] int 2Byte//有符号数,-32768~32767 unsigned int 2Byte //无符号数,只能表示整数 ...
- Java跨平台原理
此篇博文主要源自网络xiaozhen的天空的博客:http://xiaozhen1900.blog.163.com/blog/static/1741732572011325111945246/ 1.是 ...
- String解析
常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.JVM虚拟机为每个被装载的类型维护一个常量池.常量池就是该类型所用到常量的一个有序集和,包括 ...
- FreeMarker备忘
以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: ,文本:直接输出的部分 ,注释:<#-- ... --& ...
- 查看nginx版本号
# ./nginx -v Tengine version: Tengine/ (nginx/)
- Eclipse快捷键及各种设置(转载)
1.提示键配置一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项 ...