题意:多个人玩石头剪刀布,每个人提前选定了自己出哪个手势,而其中有一种特殊的人他可以随意出什么手势,问是否能够从给出的一系列石头剪刀布游戏中判断出哪个是特殊的,可以从第几局游戏中判断出来。

首先按照食物链那题的做法,定 0,1,2 做为三种手势就可以了,不过由于判断是哪个人比较麻烦,不知道哪个人的选择是无效的,就不知道那几次游戏是不正确不能加入并查集的,因此就直接暴力枚举每个人是否为特殊的人,对于涉及这个人的所有游戏都不进行并查集操作,看剩下的游戏中是否会有矛盾,如果有就说明这个人不是特殊的人,否则他就可能是。最后如果只有一个人可能是,就可以判读出来,而判断出来的局数,就是枚举其他所有人出现矛盾的游戏场次的最大值,因为只有否定完其他所有人才能确定这个人是特殊的。

 #include<stdio.h>
#include<string.h>
const int maxm=; int fa[maxm],num[maxm],wa[maxm];
struct ques{
int a,b,c;
}q[]; void init(int n){
for(int i=;i<=n;++i){
fa[i]=i;
num[i]=;
}
} int find(int x){
int r=x,t1,t2,c=;
while(r!=fa[r]){
c+=num[r];
r=fa[r];
}
while(x!=r){
t1=fa[x];
t2=c-num[x];
num[x]=c%;
fa[x]=r;
c=t2;
x=t1;
}
return r;
} int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=;i<=m;++i){
char c;
scanf("%d",&q[i].a);
c=getchar();
while(c!='='&&c!='<'&&c!='>')c=getchar();
if(c=='=')q[i].c=;
else if(c=='<')q[i].c=;
else if(c=='>')q[i].c=;
scanf("%d",&q[i].b);
}
memset(wa,-,sizeof(wa));
for(int i=;i<n;++i){
init(n);
for(int j=;j<=m;++j){
if(q[j].a==i||q[j].b==i)continue;
int x=find(q[j].a),y=find(q[j].b);
if(x!=y){
fa[x]=y;
num[x]=((num[q[j].b]+q[j].c-num[q[j].a])%+)%;
}
else{
if((num[q[j].b]+q[j].c)%!=num[q[j].a]){wa[i]=j;break;}
}
}
}
int cnt=,ans1,ans2=;
for(int i=;i<n;++i){
if(wa[i]==-){
cnt++;
ans1=i;
}
if(wa[i]>ans2)ans2=wa[i];
}
if(!cnt)printf("Impossible\n");
else if(cnt>)printf("Can not determine\n");
else printf("Player %d can be determined to be the judge after %d lines\n",ans1,ans2);
}
return ;
}

最新文章

  1. NSURLSessionTask使用dispatch_semaphore 完成同步机制
  2. 【转】Android各大发布市场
  3. tableview的重用机制(面试必问)
  4. ACM: 限时训练题解- Travelling Salesman-最小生成树
  5. Pike的安装(Ubuntu环境)
  6. Netsharp快速入门(之3) 基础档案(之B 实体建模 新建项目)
  7. Java Script 正则表达式的使用示例
  8. PHP文件目录copy
  9. ASP.NET、WinForm、C# - 配置文件信息读取 [ Web.config || Appconfig ]
  10. 关于委托:异常{ 无法将 匿名方法 转换为类型&ldquo;System.Delegate&rdquo;,因为它不是委托类型 }
  11. 2017年要学习的JavaScript的顶级框架和主题
  12. UILabel图文混排显示图片和文字
  13. HDU [P3605] Escape
  14. Python 判断闰年,判断日期是当前年的第几天
  15. Mybatis学习笔记二
  16. 使用ACR122U NFC读卡器对M1卡进行读写操作(可以读写中文)
  17. oracle 利用over 查询数据和总条数,一条sql搞定
  18. [转] 合理使用npm version与npm dist-tag详解
  19. 批量移动AD用户到指定OU
  20. JavaScript中的递归

热门文章

  1. SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)
  2. Oracle Enterprise Metadata Management (简称OEMM,Oracle元数据管理)12.1.3.0.1已经发布
  3. dotTracePerormance 工具
  4. poj2955 区间dp
  5. 06-图1 List Components
  6. mp3文件 ID3v2 帧标识的含义
  7. 创建一个Windows窗体
  8. php大力力 [024节]PHP中的字符串连接操作(2015-08-27)
  9. 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS
  10. BZOJ 1816 扑克牌