http://codeforces.com/contest/937/problem/D

题意:

给你一个有向图,A和B博弈,从一个S起点开始走,谁不能走了谁就输了。

B睡着了,A替B走。所以B可以很蠢。

如果A不能赢,那么看看A能不能使游戏永远进行下去。

否则只能输了。

POINT:

要赢肯定是有一条路径,走到尾的时候刚好是奇数步。

没有这种路径,就从S开始找能不能进入一个环。

还没有的话,就只能输了。

具体是,VIS[N][2],0代表走到这个点为偶数步,1为奇数步。

所以每个点最多只会被搜到2次。不会TLE。

如果不能赢,用SPFA从s开始搜,看看就没有环。(取所以点的入度最大的那个数,如果更新超过这个数,就有环。不能是n,会超时)。

也可以用dfs染色判环,这个更简单且优秀些。

#include <stdio.h>
#include <iostream>
#include <math.h>
#include <vector>
#include <stack>
#include <queue>
using namespace std;
#define LL long long
const int N = 1e5+55;
vector<int>G[N];int vis[N][2];
int flag=0;
int ans=0;
stack<int>q;
void dfs(int u,int k)
{if(vis[u][k]==1){return;}vis[u][k]=1;for(int i=0;i<G[u].size();i++){int v=G[u][i];dfs(v,k^1);if(ans==1){q.push(u);return;}}if(G[u].size()==0&&k==1){q.push(u);ans=1;}
}
int n,m;
int col[N];
bool hasloop(int u)
{col[u]=1;for(int i=0;i<G[u].size();i++){int v=G[u][i];int f=0;if(col[v]==1) f=1;else if(col[v]==0) f=hasloop(v);if(f==1) return f;}col[u]=2;return 0;}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){int k,x;scanf("%d",&k);while(k--){scanf("%d",&x);G[i].push_back(x);}}int s;scanf("%d",&s);dfs(s,0);if(ans==1){printf("Win\n");while(!q.empty()){printf("%d ",q.top());q.pop();}}else{if(hasloop(s)) printf("Draw\n");else printf("Lose\n");}}

Codeforces Round #467 (Div. 2) - D. Sleepy Game (找环)相关推荐

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

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

  2. Codeforces Round #715 (Div. 1) B. Almost Sorted 找规律

    传送门 文章目录 题意: 思路: 题意: 思路: 找规律yydsyydsyyds. 一看没什么想法,所以打了个表,好家伙,不打不知道,一打不得了,下面是n=6n=6n=6的符合要求的情况: 不难发现, ...

  3. Codeforces Round #467 (Div. 2)

    A Olympiad 输出除0以外的数字种数即可. B Vile Grasshoppers 猜想答案离y不会很远.暴力枚举答案, $O(\sqrt n)$验证,如果有因数落在区间$[2,p]$里就不合 ...

  4. Codeforces Round #467 (Div. 1): C. Lock Puzzle(构造)

    题目链接:http://codeforces.com/contest/936/problem/C 题意:给你一个起始字符串和一个目标字符串,你只有一种操作:选择一个数x,将后x个字母翻转,然后提取出来 ...

  5. Codeforces Round #467 (Div. 1): A. Save Energy!(公式)

    题意:Julia准备用她刚买的炉子煮鸡蛋,这个炉子开启之后会进入加热状态,但是k分钟之后就会自动停止并进入保温状态,在加热状态下鸡蛋会每秒获得2点热量,在保温状态下鸡蛋只会每秒获得1点热量,Julin ...

  6. 图论 ---- Codeforces Round #649 (Div. 2)D题[dfs求环+深度分层求图中独立集]

    D. Ehab's Last Corollary 题目大意: 就是给你一个联通图,你有两种选择 1.你可以输出包含⌈k2⌉\lceil{k\over2}\rceil⌈2k​⌉个顶点得独立点集,什么是独 ...

  7. Codeforces Round #246 (Div. 2)

    主题链接:Codeforces Round #246 (Div. 2) A:直接找满足的人数.然后整除3就是答案 B:开一个vis数组记录每一个衣服的主场和客场出现次数,然后输出的时候主场数量加上反复 ...

  8. Codeforces Round #748 (Div. 3) 题解 完整A~G

    Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  10. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

最新文章

  1. Math.Pow()是如何在.NET Framework中实现的?
  2. 大学本科电子信息工程专业核心课程与主干课程
  3. 安卓最新系统_你的Windows电脑即将可以运行最新版安卓系统
  4. 使用Windows8开发Metro风格应用四
  5. 奇奇怪怪的知识增加了,大括号的历史你知道吗?
  6. 如何新建Outlook电子邮件规则实现邮件自动分类
  7. UITextField使用的一些细节
  8. Android NDK开发之 opencv manage 免安装生成opencv应用
  9. Hadoop生态基础学习总结
  10. 智能优化算法应用:基于麻雀搜索算法与双伽马校正的图像自适应增强算法 - 附代码
  11. 复制构造函数被调用的3种情况
  12. 下行文格式图片_下行文格式图片_写信封的正确格式图片 看完这些你就懂了
  13. 迈捷php邮箱系统源码,10分钟临时邮箱源码-php bccto.me的php版本源码 windows主机即可 - 下载 - 搜珍网...
  14. 英文网站建设应该如何做?如何建好一个英文网站?
  15. Firefox 浏览器和burp suit 证书配置
  16. OA是什么意思?什么是OA? OA系统是什么?
  17. WorkManager
  18. mdx格式mysql_Saiku_学习_02_Schema Workbench 开发mdx和模式文件
  19. 抖音吸粉_抖音的几个吸粉方法
  20. 【JavaWeb】Request对象详解

热门文章

  1. 将数字转换成对应的中文 将阿拉伯数字翻译成中文的大写数字
  2. 注册中心开源方案选型
  3. 100个最热门的国人开发开源软件
  4. 优客在线大学计算机基础答案,优课在线大学计算机基础答案.pdf
  5. uint64_t {aka long unsigned int}
  6. 28岁华为员工工资表曝光牛逼的人注定会牛逼你们难道自甘堕落?
  7. 产品经理:一个商业 AIoT 智能硬件产品的完整拆解
  8. 手气不错 跳过搜索 谷歌 Google
  9. 手把带你学会红外避障循迹模块
  10. 蒋建平:国内云计算刚刚起步