/*
给定两个点之间的三种关系 = < >
如果是=就将两点放到同一个集合里进行缩点
离线处理所有关系,先用并查集将等于关系缩成一个点
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 20005
struct Query{int u,v;char ch;}q[maxn];
struct Edge{int to,nxt;}edge[maxn<<];
int n,m,head[maxn],tot;
void init(){
memset(head,-,sizeof head);
tot=;
}
void addedge(int u,int v){
edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;
} /*并查集*/
int f[maxn];
int find(int x){
return f[x]==-?x:f[x]=find(f[x]);
}
void bing(int a,int b){
int t1=find(a);
int t2=find(b);
if(t1!=t2)f[t1]=t2;
} int in[maxn];
int main(){
while(cin>>n>>m){
init();
memset(f,-,sizeof f);
memset(in,,sizeof in);
for(int i=;i<=m;i++)
cin>>q[i].u>>q[i].ch>>q[i].v;
for(int i=;i<=m;i++)
if(q[i].ch=='=')
bing(q[i].u,q[i].v);
for(int i=;i<=m;i++)
q[i].u=find(q[i].u),q[i].v=find(q[i].v); for(int i=;i<=m;i++){
if(q[i].ch=='=')continue;
if(q[i].ch=='<'){
in[q[i].u]++;
addedge(q[i].v,q[i].u);
}
if(q[i].ch=='>'){
in[q[i].v]++;
addedge(q[i].u,q[i].v);
}
} int flag=,cnt=;
queue<int>que;
for(int i=;i<n;i++)
if(f[i]==-)cnt++;
for(int i=;i<n;i++)
if(f[i]==- && in[i]==)
que.push(i);
if(que.size()>)flag=;
while(!que.empty()){
int u=que.front();
que.pop();
cnt--;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
in[v]--;
if(in[v]==)
que.push(v);
}
if(que.size()>)flag=;
}
if(cnt>)puts("CONFLICT");
else if(flag==)puts("UNCERTAIN");
else puts("OK");
}
}

hdu1811 拓扑排序+并查集缩点的更多相关文章

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

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

  2. ACM: hdu 1811 Rank of Tetris - 拓扑排序-并查集-离线

    hdu 1811 Rank of Tetris Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & % ...

  3. HDU 1811 拓扑排序 并查集

    有n个成绩,给出m个分数间的相对大小关系,问是否合法,矛盾,不完全,其中即矛盾即不完全输出矛盾的. 相对大小的关系可以看成是一个指向的条件,如此一来很容易想到拓扑模型进行拓扑排序,每次检查当前入度为0 ...

  4. hdu 1811(缩点+拓扑排序+并查集)

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

  5. hdu1811 Rank of Tetris 拓扑排序+并查集

    这道题是拓扑排序和并查集的综合运用. 由于排行榜是一种从高到低的排序.所以在拓扑排序的时候,如果有一次加入的入度为零的点数大于1,就有变得不确定了(UNCERTAIN). 由于只有一棵树,当树的数量大 ...

  6. Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)

    Problem   Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...

  7. hdu 1811 Rank of Tetris - 拓扑排序 - 并查集

    自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜, ...

  8. 拓扑排序+并查集——cf1131D

    以前做过了忘记掉了..拓扑排序如果要处理等于关系,就要用并查集把相等关系进行缩点 /* 1.相等关系用并查集合并 2.不等关系用有向边链接 3.拓扑排序求顺序 */ #include<bits/ ...

  9. 拓扑排序 - 并查集 - Rank of Tetris

    Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球 ...

随机推荐

  1. jquery和javascript的区别

    jquery 就对javascript的一个扩展,封装,就是让javascript更好用,更简单,为了说明区别,下面与大家分享下JavaScript 与JQuery 常用方法比较 jquery 就对j ...

  2. ASP.NET MVC - 发布web应用程序、部署到IIS

    发布项目 右击项目 - 发布 选择IIS - 点击发布 发布方法 - 文件系统,目标位置 - 选择与项目所在目录不同的目录(也即,指定一个发布生成文件的目录),文件发布选项 - 不选 - 点击发布 安 ...

  3. hadoop3.x.x错误解决

    错误信息:there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation. 解决方案: (缺少用户定义而造成的)因此编辑启动和关 ...

  4. TPU使用说明

    1 TPU分类和收费标准 1.1 分类和计费说明 地区 抢占式TPU Cloud TPU 美国 $1.35/hour $4.5/hour 欧洲 $1.485/hour $4.95/hour 亚太区地区 ...

  5. 3. Python 字典 常用办法总结

    Python字典客储存任意类型的对象,如字符串.数字.元祖.列表.字典.bool等. 优点:取值方便,速度快 1.创建字典 字典由键(key)和对应值(value)成对组成. 字典也被称作关联数组或哈 ...

  6. 多线程内存问题分析之mprotect方法【转】

    转自:https://blog.csdn.net/agwtpcbox/article/details/53230664 http://www.yebangyu.org/blog/2016/02/01/ ...

  7. vue之router钩子函数

    模块一:全局导航钩子函数 1.vue router.beforeEach(全局前置守卫) beforeEach的钩子函数,它是一个全局的before 钩子函数, (before each)意思是在 每 ...

  8. CFtpConnection Class

    CFtpConnection Class   1.链接http://technet.microsoft.com/zh-cn/office/2kywsafk(v=vs.80) 2.测试ftp可以用这个地 ...

  9. web页面加载、解析、渲染过程

    仅做学习参考,侵权删 原文链接:风吹De麦浪   https://www.cnblogs.com/CandyManPing/p/6635008.html 一.浏览器 浏览器的主要功能是将用户选择的we ...

  10. linux备忘簿

    1.ubuntu中按ctrl+s锁定屏幕,按ctrl+q解锁. 2.vim中撤销和恢复为u和ctlr+r 3.静态库和动态库编译命令: (1)得到hello.o g++ -c hello.cpp (2 ...