这题的话,跟食物链很相识,也是有三类,所以那个公式的话,还是一样的

题意是要找出里面唯一的一个judge,judge的特别就是他没有固定属于哪一类,所以只能枚举每一个人当judge的情况了

满足是唯一的judge的条件:

1)当然就是枚举完所有人,只有一个的时候,那就是唯一的了;

2)当此人是judge时,所有语句都成立,即不发生冲突

在这里题目还要出输出,在第几行判断该人是judge的,这个也蛮好理解的,此人之前的所有人作为judge时出现矛盾的行数的最大值就是就是我们判断的依据,

其实也可以这样想,判断当前面所以人不能成为judge的行数的最大,就是我们判断此人为judge的行数

当不止一个人可以成为judge是,输出Can not determine

当所有人都不能成为judge是,输出Impossible

#include<stdio.h>
#define MAXN 510
int f[MAXN],r[MAXN];
int a[2010],b[2010];
int find(int x)
{if(x==f[x])return f[x];int t=find(f[x]);r[x]=(r[x]+r[f[x]])%3;f[x]=t;return f[x];
}
int Union(int x,int y,int d)
{int a=find(x);int b=find(y);if(a==b){if((r[x]+d)%3==r[y])return 1;else return 0;}else {f[b]=a;r[b]=(r[x]-r[y]+d+3)%3;}return 1;
}
int main()
{int n,m,i,j,flag,num,d,max,k;char c[2001];while(scanf("%d %d",&n,&m)!=EOF){for(j=1;j<=m;j++)scanf("%d%c%d",&a[j],&c[j],&b[j]);num=max=0;for(i=0;i<n;i++){for(k=0;k<n;k++)//初始化{f[k]=k;r[k]=0;}for(j=1;j<=m;j++){if(a[j]==i||b[j]==i)//当我们以i为judge时,输赢都无所谓,所以不合并,应该说是不能合并continue;if(c[j]=='=')d=0;else if(c[j]=='<')d=1;else d=2;if(Union(a[j],b[j],d)==0)break;}if(j==m+1)//所有语句都正确{num++;flag=i;}else {if(j>max)max=j;}//if(num>=2)break;}if(num==0)printf("Impossible\n");else if(num==1)printf("Player %d can be determined to be the judge after %d lines\n",flag,max);else printf("Can not determine\n");}return 0;
}

转载于:https://www.cnblogs.com/nanke/archive/2011/05/12/2044210.html

pku2192(并查集+枚举)相关推荐

  1. poj2912(种类并查集+枚举)

    题目:http://poj.org/problem?id=2912 题意:n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000),接下来m行形如x, y, ch ...

  2. poj2912(带权并查集+枚举)

    题目链接:http://poj.org/problem?id=2912 题意:给n个人,m组关系,玩石头剪刀布的游戏,n个人中除一个人judge以外,其他人属于3个group(即石头.剪刀.布),他们 ...

  3. N - 嘤嘤嘤 (并查集+枚举)

    Our lovely KK has a difficult Social problem. A big earthquake happened in his area. N(2≤N≤2000)N(2≤ ...

  4. HDU-5624 -KK's Reconstruction(并查集+枚举)

    Problem Description Our lovely KK has a difficult Social problem. A big earthquake happened in his a ...

  5. hdu 1598 find the most comfortable road (并查集+枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000/ ...

  6. BZOJ 1050: [HAOI2006]旅行comf(枚举+并查集)

    [HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点 ...

  7. hdu1589(枚举+并查集)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  8. Rochambeau POJ - 2912 (枚举和加权并查集+路径压缩)找唯一裁判

    题意:有n个人玩石头剪刀布,有且只有一个裁判.除了裁判每个人的出拳形式都是一样的. a<b表示b打败a,a=b表示a和b出拳一样,平手.a>b表示a打败b. 给出m个回合的游戏结果,问能否 ...

  9. POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)

    题意 在一个有N(1 ≤ N ≤ 1,000)个点环形图上有P(1 ≤ P ≤ 10,000)对点需要连接.连接只能连接环上相邻的点.问至少需要连接几条边. 思路 突破点在于最后的结果一定不是一个环! ...

最新文章

  1. RANet : 分辨率自适应网络效果和性能的best trade-off | CVPR 2020
  2. 新晋院士:直到硕士毕业前都想做公务员,现在只对科研感兴趣
  3. Jasperreport之与Springboot整合
  4. python网页保存为图片_使用Python保存网页上的图片或者保存页面为截图
  5. linux 如何安装Python3.5
  6. _新车 | 新款捷豹F-PACE登陆广州车展!内外提升十分明显
  7. LinkedListArrayList
  8. python字典示例简单代码_python学习笔记:字典的使用示例详解
  9. 带网格的_【我看身边的网格化】申港街道:一人一板穿梭楼宇小巷 一网一格解决百姓问题...
  10. echarts地图文字重叠解决方案_踩坑日记:在Echarts中国地图踩到的坑
  11. 阅读科研文献心得分享(二)
  12. [中国近代史] 第四章测试
  13. 以太联盟 基于区块链技术的角色扮演对战游戏
  14. VCD零售/出租管理系统
  15. Android源码分析 - Framework层的Binder(客户端篇)
  16. linux系统配置X11
  17. 基础SQL语法语句大全(一篇学会所有SQL语句)
  18. 【学习笔记】云计算关键技术_虚拟化
  19. 2022年湖南省临床执业医师考试混合单元随机模拟题
  20. 2020-7-13:记录足迹。西电计算机考研总结 优研计划夏令营

热门文章

  1. react 显示当前时间_React 灵魂 23 问,你能答对几个?
  2. linux启动关闭脚本,Linux中启动/停止/重启/状态的startup脚本
  3. 零基础入门语义分割——Task2 数据扩增
  4. Python计算机视觉中译本实例代码/数据集
  5. 物体检测,用于检测红灯笼demo(含训练代码)
  6. 隔行变色java代码_纯js实现隔行变色效果
  7. nginx安装与项目发布
  8. 服务器如何关闭登录日志文件,linux云服务器登录日志文件
  9. 霍夫直线检测python_python+opencv实现霍夫变换检测直线的方法
  10. Android Binder通信机制