这道题是拓扑排序和并查集的综合运用。

  由于排行榜是一种从高到低的排序。所以在拓扑排序的时候,如果有一次加入的入度为零的点数大于1,就有变得不确定了(UNCERTAIN)。

  由于只有一棵树,当树的数量大于1,就矛盾。还有一种产生矛盾的可能是,当输入的是a>b(或者a<b)时,但是并查集中他们的父节点相同。因为这题的一个集合其实被当成了一个点。这样不相等的相等就是矛盾的。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = , M =;
struct node
{
int to, next;
};
node edge[M];
int ind[N], head[N],que[N],f[N],L[N],R[N];
int iq,tot,num,FLAG;
char ch[N];
int Find(int x)
{
if(x==f[x]) return x;
return f[x]=Find(f[x]);
}
void topo(int n)
{
int i,k,j=,s;
for(i=;i<n;i++)
if(ind[i]==&&i==Find(i)) que[j++]=i;
FLAG=;
if(j>) FLAG=;
s=j;
for(i=;i<j;i++)
{
if(j-s>) FLAG=;
s=j;
int u=que[i];
num--;
for(k=head[u]; k!=-; k=edge[k].next)
{
ind[edge[k].to]--;
if(ind[edge[k].to]==)
que[j++]=edge[k].to;
}
}
iq=j;
}
void addedge(int i,int j)
{
edge[tot].to=j;edge[tot].next=head[i];head[i]=tot++;
} void Link(int i,int j)
{
int a=Find(i),b=Find(j);
if(a!=b) {f[b]=a;}
}
void init()
{
tot=;
for(int i=;i<N;i++)
{
f[i]=i;
head[i]=-;
ind[i]=;
}
}
int main()
{
//freopen("test.txt","r",stdin);
int n,m,i,j,k;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
int flag=;
num=n;
for(i=;i<m;i++)
{
scanf("%d %c %d",&L[i],&ch[i],&R[i]);
if(ch[i]=='=') {Link(L[i],R[i]);num--;}
}
for(i=;i<m;i++)
{
if(ch[i]=='=') continue;
int a=Find(L[i]),b=Find(R[i]);
if(a==b) flag=;
if(ch[i]=='>') {addedge(a,b); ind[b]++;}
else {addedge(b,a); ind[a]++;}
}
topo(n);
if(num>||!flag) printf("CONFLICT\n");
else if(FLAG) printf("UNCERTAIN\n");
else printf("OK\n");
}
return ;
}

hdu1811 Rank of Tetris 拓扑排序+并查集的更多相关文章

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

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

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

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

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

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

  4. HDU 1811 拓扑排序 并查集

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

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

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

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

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

  7. HDU 1811 Rank of Tetris(拓扑排序+并查集)

    题目链接: 传送门 Rank of Tetris Time Limit: 1000MS     Memory Limit: 32768 K Description 自从Lele开发了Rating系统, ...

  8. hdu1811 拓扑排序+并查集缩点

    /*给定两个点之间的三种关系 = < >如果是=就将两点放到同一个集合里进行缩点 离线处理所有关系,先用并查集将等于关系缩成一个点 */ #include<bits/stdc++.h ...

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

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

随机推荐

  1. C# 常用语句

    var list = dt.AsEnumerable().Select(t => t.Field<string>("Bed")).ToList();Select( ...

  2. CSS font-style中italic和Oblique有何区别 标签: css字体 2017-01-05 14:42 60人阅读 评论

    *要搞清楚这个问题,首先要明白字体是怎么回事.一种字体有粗体.斜体.下划线.删除线等诸多属性. 但是并不是所有字体都做了这些,一些不常用的字体,或许就只有个正常体,如果你用Italic,就没有效果了~ ...

  3. 7.ES几种常见的搜索方式

    主要知识点  1, query string search (1)  GET /ecommerce/product/_search (2) GET/ecommerce/product/_search? ...

  4. Vue CLI 3 中文文档

    翻译文档 文档翻译全貌 前言 之前写了一篇Vue CLI 3.x 版本的简单体验,当时文档还不全,具体的使用方法并不是很清楚,大概是2月7号,收到Vue CLI 3接近Beta版的提示,作者尤雨溪也讲 ...

  5. 去除html标签 php

    function my_html($string,$sublen =80){ $string = strip_tags($string); $string = preg_replace ('/\n/i ...

  6. Mysql学习总结(39)——30条MySql语句优化技巧

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  7. HDU 4456 Crowd

    Crowd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. NYIST 914 Yougth的最大化

    Yougth的最大化时间限制:1000 ms | 内存限制:65535 KB难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? ...

  9. js 元素遍历

    2018-06-26 //百度首页测试 var i, len = 0, element = document.querySelector('#s_form_wrapper'), child = ele ...

  10. wcf--知识点

    WCF创建自托管服务 //自托管 WCF服务 //1.创建宿主 ServiceHost host = new ServiceHost(typeof(TaoBaoWCFServiceContract.T ...