题目:https://www.acwing.com/problem/content/1321/

给定一个有 N 个节点的有向无环图,图中某些节点上有棋子,两名玩家交替移动棋子。
玩家每一步可将任意一颗棋子沿一条有向边移动到另一个点,无法移动者输掉游戏。
对于给定的图和棋子初始位置,双方都会采取最优的行动,询问先手必胜还是先手必败。
输入格式:
第一行,三个整数 N,M,K,N 表示图中节点总数,M 表示图中边的条数,K 表示棋子的个数。
接下来 M 行,每行两个整数 X,Y 表示有一条边从点 X 出发指向点 Y。
接下来一行, K 个空格间隔的整数,表示初始时,棋子所在的节点编号。
节点编号从 1 到 N。
输出格式:
若先手胜,输出 win,否则输出 lose。
数据范围:
1≤N≤2000,
1≤M≤6000,
1≤K≤N

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 6010;int h[2010], ne[N], e[N];  //邻接表存图
int idx;
int f[2010];
void add(int x, int y)
{e[idx] = y, ne[idx] = h[x], h[x] = idx++;
}
int sg(int x)  //跑sg
{if (f[x] != -1)return f[x];set<int>se;for (int i = h[x]; i != -1; i = ne[i]){int y = e[i];se.insert(sg(y));}for (int i = 0;; i++)if (!se.count(i)){f[x] = i;break;}return f[x];
}
int main()
{   memset(h,-1,sizeof h);memset(f, -1, sizeof f);int n, m, k;cin >> n >> m >> k;for (int i = 0; i < m; i++){int x, y;cin >> x >> y;add(x, y);}int res = 0;for (int i = 0; i < k; i++)  //求异或和{int data;cin >> data;res ^= sg(data);}if (res == 0)puts("lose");else puts("win");return 0;
}

1319. 移棋子游戏(sg+图论(移棋子)邻接表)相关推荐

  1. 【图论】关于邻接表建图

    邻接表 作为一名现役Oier在做过无数图论题目和搜索题目之后,可以说是相当熟悉了,但是今天做的一道题,让我对于邻接表表示直接懵逼,原来在跑最短路的时候还是明白每个数组各自的作用的,然而一旦在其它题目中 ...

  2. [AcWing] 1319.移棋子游戏 博弈论 Sg函数板子题

    题目链接:1319.移棋子游戏 题解 好久没写博弈论的题了,写几道复习一下,博弈论SG主要由两大部分组成:SG函数和SG定理 SG(x)=mex(S),其中S是x的后继状态的SG函数值集合,mex(S ...

  3. AcWing 1319. 移棋子游戏

    sg函数是一张有向无环图 尼姆博弈对每一张图sg(值)进行游戏 就是加强版的集合尼姆博弈(集合尼姆博弈中拓展是根据集合可能的新状态),这里是回归本质,sg操作是对每个状态拓展出边,并通过出边sg值集合 ...

  4. [博弈论]移棋子游戏

    https://www.acwing.com/problem/content/1321/ 思路: 求所有棋子的sg异或之和, 记忆化搜索 得到当前结点后继的这些点的sg值之和,放到set里面(哈希表也 ...

  5. 博弈论sg函数——《移旗子游戏》《剪纸游戏》

    传送门:移棋子游戏 思路:按照sg函数定义,在这道题里面,不能移动的状态就是终点态,sg值设为0,其余所有的点的sg函数值就是属于其所有后继节点的sg函数值组成的集合里面非集合元素的最小的一个数字,也 ...

  6. 51nod 1534 棋子游戏

    1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudg ...

  7. 翻棋子游戏与Nim游戏

    翻棋子游戏: 题意:一个棋盘上每个格子有一个棋子,每次操作可以随便选一个朝上的棋子(x,y),代表第i行第j列的棋子,选择一个形 如(x,b)或(a,y)(其中b < y,a < x)的棋 ...

  8. 第33篇 Android Studio实现五子棋游戏(四)棋子类和主类

    第33篇 Android Studio实现五子棋游戏(四)棋子类和主类 1.棋子类 2.主类 2.1.变量 2.2.重写方法 2.3.代码 3.效果 3.1.进去界面 3.2.赢棋 3.3.提示 3. ...

  9. 【Qt象棋游戏】03_象棋棋子摆放

    文章目录 01 - 加载棋子UI资源 02 - 添加棋子属性类 03 - 添加棋子标签 04 - 效果 05 - 总结 棋子图片百度云链接: 01 - 加载棋子UI资源   添加制作好的棋子UI图片到 ...

最新文章

  1. 一个帖子学会Android开发四大组件
  2. oracle adf immediate,Oracle ADF 双击行事件
  3. 修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?
  4. Linux查看进程并重启服务命令
  5. 程序员修复一个bug的心路历程,太形象了
  6. python右对齐函数_Python这68个内置函数,建议你吃透!
  7. (5)剑指Offer之栈变队列和栈的压入、弹出序列
  8. c语言某天星期几,计算某天是星期几【C代码】
  9. 蘑菇街teamtalk简介
  10. 一切的闹闹哄哄,只是他在水帘洞躲避风沙那晚做的一个梦
  11. 抖音矩阵号搭建及开发思路分享丨抖音矩阵源码丨抖音矩阵号运营
  12. 【CSS】纯css实现立体摆放图片效果
  13. python爬虫检测ip是否有效
  14. TigerGraph率先推出原生图数据库即服务,3200万美元B轮融资在这里!
  15. Linux的20个常用命令
  16. STA setup/hold time可以是负数么?
  17. CCF系列题解--2016年9月第四题 交通规划
  18. Github博客+腾讯云域名的快捷绑定方案
  19. html中video视频播放
  20. K8s (Kubernetes简介、特性、架构)

热门文章

  1. 2020年二级计算机msoffice题库,2020年3月全国计算机等级考试《二级MS Office高级应用》题库...
  2. 永恒之蓝漏洞分析与防护技术
  3. OpenCV每日函数 几何图像变换模块 (7) linearPolar函数/logPolar函数/warpPolar函数
  4. p2p 了解资源整合
  5. linode上搭建有standby+mirror功能的Greenplum集群并用TPC-DS基准测试
  6. hiredis 编译安装
  7. 武汉新时标文化传媒有限公司短视频创作的对象法与情感需求法
  8. 一款好用的tomcat插件---TomcatPlugin插件
  9. MATLAB下拉菜单popupmenu的简单使用介绍
  10. 2020易支付系统源码