题意:两个人在有向上进行博弈,先手先下,后手在睡觉,所以后手由先手代下,每个人每次要沿着边移动,不能移动的人输,问最后先手是赢还是输还是平局,赢的话输出路径

题解:两个人进行博弈,先手帮后手下,所以先手的优势更大,只要从开始点经过环,那么先手不可能输

现在先考虑先手赢,从开始点直接搜就可以了,有环会进入死循环,所以一个点标记开始点到这个点步数的奇偶,如果走到这个点为奇数,而奇数被标记,那么就可以不继续搜这个点了

先手平局的情况是先手不能赢,而且能从开始点走到环

剩下的情况就是输了

#include <bits/stdc++.h>
#define maxn 100010
#define INF 0x3f3f3f3f
using namespace std;
vector<int >G[maxn], ans;
int dp[maxn][2], pre[maxn][2], out[maxn], n, m, t, a, flag = 0;
bool vis[maxn];
void dfs(int x, int l) {vis[x] = true;for(int to : G[x]){if(pre[to][l^1]==0) {pre[to][l^1] = x;dfs(to, l^1);}if(vis[to]) flag = 1;}vis[x] = false;
}
int main(){scanf("%d%d", &n, &m);for(int i=1;i<=n;i++){scanf("%d", &t);while(t--){scanf("%d", &a);G[i].push_back(a);out[i]++;}}scanf("%d", &t);pre[t][0] = -1;dfs(t, 0);for(int i=1;i<=n;i++){if(out[i] == 0&&pre[i][1]){printf("Win\n");t = 1;while(i!=-1){ans.push_back(i);i = pre[i][t];t ^= 1;}for(int i=ans.size()-1;i>=0;i--)printf("%d ", ans[i]);return 0;}}if(flag) printf("Draw\n");else printf("Lose\n");return 0;
}

转载于:https://www.cnblogs.com/Noevon/p/8596540.html

Codeforces937D Sleepy Game相关推荐

  1. UVA10427 Naughty Sleepy Boys【数学】

    Hasan and Tanveer are two naughty boys of the class. They spent most of their class time playing 'Ti ...

  2. P5200 [USACO19JAN]Sleepy Cow Sorting

    P5200 [USACO19JAN]Sleepy Cow Sorting 题目描述 Farmer John正在尝试将他的N头奶牛(1≤N≤10^5),方便起见编号为1-N,在她们前往牧草地吃早餐之前排 ...

  3. LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组

    \(\mathrm{Sleepy Cow Sorting}\) 问题描述 LG5200 题解 树状数组. 设\(c[i]\)代表\([1,i]\)中归位数. 显然最终的目的是将整个序列排序为一个上升序 ...

  4. Sleepy Kaguya

    https://ac.nowcoder.com/acm/contest/338/C 题解:验算一下,发现其实只有1和-1两个答案.奇数为-1,偶数为1: 演算过程: G(k)=F[k+1]*F[k+1 ...

  5. P5200 [USACO19JAN]Sleepy Cow Sorting 牛客假日团队赛6 D 迷路的牛 (贪心)

    链接:https://ac.nowcoder.com/acm/contest/993/E 来源:牛客网 对牛排序 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  6. CodeForces - 937D Sleepy Game

    传送门:CodeForces - 937D 题意:两人进行一场走棋子的游戏,如果有人无法再继续走下去,那么他就输了.Petya先走,且如果petya的胜负优先级为:WIN>DRAW>LOS ...

  7. Codeforces Round #467 (Div. 1): B. Sleepy Game(BFS+有向图判环)

    题意(经过转换):给你一个n个点m条边的有向图,再给你一个起点x,问存不存在一条路径满足①路径中有奇数条边:②终点的出度为0,如果存在输出Win,并在第二行输出这个路径(可能不唯一输出任意一种),否则 ...

  8. P5200 [USACO19JAN]Sleepy Cow Sorting G

    题目描述 Farmer John正在尝试将他的 NN 头奶牛(1\le N\le 10^51≤N≤105),方便起见编号为 1\ldots N1-N,在她们前往牧草地吃早餐之前排好顺序. 当前,这些奶 ...

  9. Sleepy Cow Herding

    题目描述 Farmer John的三头获奖奶牛Bessie.Elsie和Mildred,总是会迷路走到农场上遥远的地方去!他需要你帮助将她们一起赶回来. 农场的草地大体是一块狭长的区域--我们可以将其 ...

最新文章

  1. 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现
  2. 文件的读取流和书写流
  3. 【个人成长学习讨论小组】练习2:角色
  4. linux目录挂载到内存,Linux中内存挂载到目录下
  5. 微信小程序点击按钮实现手机振动功能
  6. SAP Spartacus里unit list tree节点collapse all按钮的实现逻辑
  7. 马斯克翻跟头机器人_马斯克又搞事情 用VR训练机器人模仿人类动作
  8. 根据共享文件夹的权限进行自动映射网络驱动器
  9. 四张类图理一下Streams的用法
  10. 线上展示3D可视化电子沙盘管理系统
  11. 脚本造成web浏览器运行速度减慢_脚本导致ie运行缓慢|ie8 提示脚本运行缓慢|脚本导致运行速度减慢...
  12. MATLAB图像分割之阈值分割
  13. 多测师_设置 Linux 支持中文
  14. (转载)硬盘安装XP64位系统
  15. C++解压zip压缩文件
  16. Codeforces Round #521 (Div. 3) E - Thematic Contests (二分 + STL)
  17. 汽车厂VIN码生成软件
  18. 资福医疗大圣磁控胶囊胃镜硬核出镜高交会
  19. C语言实现通讯录1.0
  20. phpredis使用zadd批量添加到集合

热门文章

  1. OpenDesktop 1.0开放桌面操作系统光盘启动安装过程详细图解
  2. Struts2中 Result类型配置详解
  3. Hadoop API编程——FileSystem操作
  4. ARM汇编伪指令介绍(全集)
  5. 监听ListView滚动到最底部
  6. Java注释(Annotation)详解
  7. golang平滑重启
  8. 串行 spi Flash 跨页编程的注意点
  9. 汇编: 更灵活的定位内存地址的方法
  10. 汇编: 在代码中安排自己定义的数据,栈空间