字符是X,i=j就是这个人在这个位置
1 代表,i人能赢j人当king
0代表输;
游戏规则是b 是king a能赢b a当king
问裁判按什么安排顺序0能当king
这道题有一个误区,下意识建图就是 a如果可以打败b 就连接a->b 最后扫一遍。
这样是不全的。有些图无法遍历到。
你其实不需要关心后面谁打赢谁,我们是需要保证0这个人能赢即可。
也就是说如果0-》1, 关于1连接的随便打,之后因为你最后肯定是1赢,而1肯定会败给0.
我们从0开始遍历,如果所有的点都能扫到,那就说明0是可以赢得。如果从0开始扫,发现有点扫不到。
这就代表那个点没有敌人,它指向0.这样0无论怎么安排都是赢不了的。因为没有人替0把那个人干掉。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
if(n%2==1&&m%2==1)
{
cout<<1<<endl;
return 0;
}
if(n%2==1&&m%2==0)
{
if(n<m)
cout<<2<<endl;
else
cout<<0<<endl;
return 0;
}
if(n%2==0&&m%2==1)
{
cout<<0<<endl;
return 0;
}
if(n%2==0&&m%2==0)
{
cout<<0<<endl;
}
}