Codeforces-936B Sleepy Game
传送门
n点m边的有向图,
如果 一个玩家能从起点出发,走奇数步后不能再行动,
输出Win
输出路径
否则如果 一个玩家能走无限步
输出Draw
否则
输出Lose
跑一遍dfs并判环
1 #include <cstdio> 2 #include <vector> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 typedef long long LL; 7 8 const int maxn = 1e5 + 10; 9 vector<int> G[maxn]; 10 11 int n, m; 12 bool draw; 13 bool out[maxn]; 14 bool dp[maxn][2]; 15 int vis[maxn][2], nxt[maxn][2]; 16 17 bool dfs(int x, int s) { 18 if (!out[x]) return s == 1; 19 if (vis[x][s] == 2) return dp[x][s]; 20 vis[x][s] = 1; 21 bool flag = 0; 22 for (int i = 0; i < G[x].size(); i++) { 23 int to = G[x][i]; 24 if (vis[to][s ^ 1] == 1) {//注意不能为2 25 draw = 1; 26 continue; 27 } 28 if (dfs(to, s ^ 1)) { 29 flag = 1; 30 nxt[x][s] = to; 31 } 32 } 33 vis[x][s] = 2; 34 return dp[x][s] = flag; 35 } 36 37 void print(int x, int s) { 38 printf("%d", x); 39 if (nxt[x][s]) { 40 printf(" "); 41 print(nxt[x][s], s ^ 1); 42 } else { 43 puts(""); 44 } 45 } 46 47 48 49 int main() { 50 scanf("%d%d", &n, &m); 51 for (int i = 1; i <= n; i++) { 52 int cnt; 53 scanf("%d", &cnt); 54 if (cnt) out[i] = 1; 55 while (cnt--) { 56 int to; 57 scanf("%d", &to); 58 G[i].push_back(to); 59 } 60 } 61 int st; 62 scanf("%d", &st); 63 if (dfs(st, 0)) { 64 puts("Win"); 65 print(st, 0); 66 } else if (draw) { 67 puts("Draw"); 68 } else { 69 puts("Lose"); 70 } 71 72 return 0; 73 }
转载于:https://www.cnblogs.com/xFANx/p/8597209.html
Codeforces-936B Sleepy Game相关推荐
- CodeForces - 937D Sleepy Game
传送门:CodeForces - 937D 题意:两人进行一场走棋子的游戏,如果有人无法再继续走下去,那么他就输了.Petya先走,且如果petya的胜负优先级为:WIN>DRAW>LOS ...
- Codeforces Round #467 (Div. 1): B. Sleepy Game(BFS+有向图判环)
题意(经过转换):给你一个n个点m条边的有向图,再给你一个起点x,问存不存在一条路径满足①路径中有奇数条边:②终点的出度为0,如果存在输出Win,并在第二行输出这个路径(可能不唯一输出任意一种),否则 ...
- codeforces的dp专题
1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...
- CodeForces 375D Tree and Queries
传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...
- 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...
- 【codeforces 812C】Sagheer and Nubian Market
[题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...
- CodeForces 获得数据
针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...
- codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...
题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...
- CodeForces 595A
题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...
- codeforces A. Jeff and Digits 解题报告
题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...
最新文章
- mysql为什么每天0点就装东西_MySQL的详细安装教程
- java 类中构造函数的讲解
- instanceof 实现
- [原创]辽宁移动通信-话费余额查询
- Maven问题总结 - 2
- python判断值是否为空(亲测)
- linux nohup不生成日志,linux重定向及nohup不输出的方法
- ios打不开html文件,在DocumentsWeb目录中打开UIWebview时,ios-css和js在html文件中无法链接...
- Tyvj P1016 包装问题 (DP)
- OpenCV人脸识别
- 检测mysql表更新吗,知网查重系统的数据库是多久更新一次?
- 华为外包公司一面二面三面回顾
- 2017校招中的流年回忆
- Users用户类默认值及各属性可能的值
- 解决cmd中文输入法看不到待选文字
- ios微信组件跳转_IOS如何从微信中跳转APP
- shell(37) : java控制台运行打印颜色字体
- 9.PS-强大的画笔工具
- MyBatis实现中间表关联查询
- 光时域反射仪都有什么功能
热门文章
- Android面部动态识别(眼睛+嘴巴+鼻子轮廓标记)
- oracle怎么绑定vue,Oracle AutoVue 安装与配置教程,oracleautovue
- 关于360插件化框架Replugin竖屏修改为横屏解决方案
- python进程和线程大全
- Java选择结构之switch
- 从苏宁电器到卡巴斯基第06篇:我在佳木斯的日子(中)
- IAQI的计算工具类,根据空气检测浓度值计算IAQI值和空气质量等级(pm2.5,pm10,so2,no2,co,o3)
- 魔兽RPG仿魔兽世界:基尔加丹的末日V1.0
- html5 自动触发事件,HTML5视频触发事件触发一次
- python中if语句的实例_python的if语句里怎样写两个条件