link

题意:

首先看到排名自然想到拓扑序,但是存在等于的情况,这就启发我们把等于的情况缩成一个点,让后在缩点后的图中进行拓扑即可。
对于不合法的情况当然是拓扑序没有遍历到应该遍历的点,所以只需要检查遍历了几个点即可。对于信息不全的情况,那就是对应同一级存在多个点,所以只需要判断队列是否恒为一个元素即可(当然这种说法不严谨)。
最后如果用并查集缩点的话,一定要注意判断 i == find(i) ,因为缩完点之后这个点就是这个集合的代表。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=100010,M=N*2,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
int e[M],ne[M],h[N],idx;
int p[N],tot;
int d[N];
bool st[N];
struct Query
{int a,b;char op;
}q[N];void add(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}int find(int x)
{return x==p[x]? x:p[x]=find(p[x]);
}int topsort()
{int sum=0,s=0;int f1,f2; f1=f2=0;queue<int>q;for(int i=0;i<n;i++) if(!d[i]&&i==find(i)) q.push(i),s++; else if(i==find(i)) s++;if(q.size()>1) f1=1;while(q.size()){int cnt=0; sum++;int u=q.front(); q.pop();for(int i=h[u];~i;i=ne[i]){int j=e[i];if(--d[j]==0) q.push(j),cnt++;}if(cnt>1) f1=1;}if(sum!=s) f2=1;if(f1&&f2) return 2;else if(f2) return 2;else if(f1) return 1;else return 0;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);while(scanf("%d%d",&n,&m)!=EOF){idx=0; tot=0;for(int i=0;i<n;i++) p[i]=i,h[i]=-1,d[i]=0,st[i]=0;for(int i=1;i<=m;i++){int a,b; char op[2];scanf("%d%s%d",&a,op,&b);if(*op=='=') p[find(a)]=find(b);else q[++tot]={a,b,op[0]};}for(int i=1;i<=tot;i++){int a=q[i].a,b=q[i].b;st[a]=1; st[b]=1;char op=q[i].op;a=find(a); b=find(b);if(op=='>') d[a]++,add(b,a);else d[b]++,add(a,b);}int t=topsort();if(t==2) puts("CONFLICT");else if(t==1) puts("UNCERTAIN");else puts("OK");}return 0;
}
/**/

HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me相关推荐

  1. hdu 1811 Rank of Tetris (并查集+拓扑排序)

    Problem - 1811 感觉这题的并查集以及拓扑排序并不难,但是做题的时候必须理解到矛盾(CONFLICT)与不确定(UNCERTAIN)直接的优先关系. 做这题的时候,构图什么的很简单,就是没 ...

  2. HDU 1811 Rank of Tetris(并查集按秩合并+拓扑排序)

    Rank of Tetris Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  3. HDU 1811 Rank of Tetris

    Rank of Tetris Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. hdu 1811Rank of Tetris (并查集 + 拓扑排序)

    1 /* 2 题意:这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rating高于B ...

  5. HDOJ 1811 Rank of Tetris

    Rank of Tetris Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  6. hdu 1232 畅通工程 最小生成树 并查集

    1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...

  7. How Many Answers Are Wrong HDU - 3038(带权并查集经典题,满满的都是注释)

    How Many Answers Are Wrong HDU - 3038  点击打开链接 题意:现在有n个数(你并不知道这n个数是什么),m次查询,每次查询给出u,v,w.表示从第u个数到第v个数的 ...

  8. HDU 1213 How Many Tables 并查集 水~

    http://acm.hdu.edu.cn/showproblem.php?pid=1213 果然是需要我陪跑T T,禽兽工作人员还不让,哼,但还是陪跑了~ 啊,还有呀,明天校运会终于不用去了~耶耶耶 ...

  9. hdu 3234 Exclusive-OR 题解(并查集,思维)

    该死的期末复习终于结束了... 暑假来了\color{#ff0000}{暑假来了}暑假来了!!! 所以我就珂以非常开心的写博客了. 原题链接: hdu 题意简述 多组数据.你有一个没有确定的数列.有一 ...

最新文章

  1. [转]Java中常用的集合—初学者的你不可错过的精编整理
  2. 边缘计算的三种模式:MEC、微云和雾计算
  3. Axure中推动拉动元件不生效_单线图标元件库SVG矢量图标 纯净无干扰的Axure元件库...
  4. 蓄电池充放电试验培训课件
  5. RBAC模型:表设计分析
  6. PartialView 加载Js
  7. [USACO17JAN]Promotion Counting 题解
  8. Java11 新特性
  9. nui UI 具有右键属性的菜单树
  10. 三维点云学习(3)8- 实现Spectral谱聚类
  11. 源码:Qt开发的离线软件注册机 适用于工业设备。
  12. JanusGraph的使用
  13. app消息推送的详细实现教程
  14. 全球及中国DNA测序行业发展与竞争状况分析报告2022~2027年
  15. fortran---说实话,不知道记录有什么用 写着玩吧
  16. android和平精英安装目录,和平精英文件目录在哪里 本体及安装包位置
  17. 机器学习完整项目实战附代码(二):探索型数据分析+特征工程+建模+报告
  18. 基于java springboot美容美发美甲预约小程序源码
  19. Oracle对话框列间距太近,如何调整MathType矩阵行列间距
  20. 玩转RHEL6桌面应用

热门文章

  1. 公厕的门下面为什么都要空一截?难道是为了和别人分享我中午吃的两碗螺狮粉?
  2. 成年人改变生活的方式,都是从它开始
  3. 有趣的灵魂,从高质量的阅读开始
  4. 这里聚集了优秀的数学老师、家长,有超多惊喜在等你!
  5. 原来R语言还有这些不为人知的用处!
  6. python ssh模块_python paramiko模块(ssh) 使用
  7. vue 带全选和多选的表格怎么写_EXCEL五分钟,批量制作带照片的工地出入证
  8. php2612,达人曝光LGLSNJ2612AR质量好吗?怎么样呢?体验报告揭秘
  9. php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
  10. ab压力测试_Apache ab压力测试的知识点