博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 937D - Sleepy Game
阅读量:6963 次
发布时间:2019-06-27

本文共 1061 字,大约阅读时间需要 3 分钟。

思路:

dfs。

vis[u][0]==1表示u这个点能从s点偶数路径到达

vis[u][1]==1表示u这个点能从s点奇数路径到达

这个样就能保证dfs时每个点最多被访问2次

那么如果存在一个点u,vis[u][1]==1且u的出度为0,那么就存在能Win的方案

否则,dfs染色判环,如果存在从s点出发的环,就存在Draw的方案

不然就是Lose

代码:

#include
using namespace std;#define ll long long#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))const int N=1e5+5;vector
g[N],vc;int vis[N][2],pre[N][2],vs[N];void dfs(int o,int u,int d){ if(vis[u][d]==1)return ; vis[u][d]=1; pre[u][d]=o; for(int i=0;i
>n>>m; for(int i=1;i<=n;i++){ cin>>t; while(t--){ cin>>u; g[i].pb(u); } } cin>>s; dfs(0,s,0); for(int i=1;i<=n;i++){ if(vis[i][1]&&g[i].size()==0){ int u=i,t=1; vc.pb(u); while(pre[u][t]!=0){ vc.pb(pre[u][t]); u=pre[u][t]; t^=1; } cout<<"Win"<
=0;j--)cout<
<<' '; cout<

 

转载于:https://www.cnblogs.com/widsom/p/8491394.html

你可能感兴趣的文章
021、镜像小结(2019-01-14 周一)
查看>>
VS CODE 快捷键
查看>>
一只老鼠夹
查看>>
苹果新的编程语言 Swift 语言进阶(一)--综述
查看>>
windows7 修改环境变量 和 用不用重启电脑的讨论
查看>>
我的第一篇paper
查看>>
分页查询
查看>>
mysql中Timestamp,time,datetime 区别
查看>>
margin啥时候取较大值
查看>>
MVC Core
查看>>
每天一道LeetCode--172. Factorial Trailing Zeroes
查看>>
孤儿进程与僵尸进程[总结]
查看>>
C#委托(delegate)
查看>>
openStack虚拟机error 错误状态基于差异镜像+基镜像做恢复
查看>>
Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比
查看>>
设计模式汇总
查看>>
【书签】个人常用网站整理及应用推荐
查看>>
FJUT3565 最大公约数之和(容斥)题解
查看>>
java实现顺序表
查看>>
hibernate.cfg.xml 配置(摘录)
查看>>