HDU 1811
http://acm.hdu.edu.cn/showproblem.php?pid=1811
中文码题
对于等号的情况,用并查集合并(因为编号不同一定可以分出先后)
然后判断能否构成拓扑排序,以及拓扑排序是不是唯一的
题不难,考验代码能力,能1A证明手感还不错
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <set> using namespace std; int vis[],head[],cnt,fa[],st[]; struct p{
int a,b;
char op[];
}kk[]; struct node{
int s,t,nxt;
}e[]; void add(int s,int t){
e[cnt].s=s;e[cnt].t=t;e[cnt].nxt=head[s];head[s]=cnt++;
} void INIT(){
cnt=;
memset(head,-,sizeof(head));
} int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);
} int dfs(int u){
vis[u]=-;
for(int i=head[u];i!=-;i=e[i].nxt){
int v=e[i].t;
if(vis[v]<)return ;
else if(!vis[v] && !dfs(v))return ;
}
vis[u]=;
return ;
} int OK(int n){
for(int i=;i<n;i++){
if(!vis[i] && !st[i] && !dfs(i))return ;
}
return ;
} int IN[]; int main(){
int n,m;
while(~scanf("%d%d",&n,&m)){
INIT();
for(int i=;i<n;i++)fa[i]=i;
memset(IN,,sizeof(IN));
memset(st,,sizeof(st));
int flag=;
for(int i=;i<m;i++){
scanf("%d%s%d",&kk[i].a,kk[i].op,&kk[i].b);
if(kk[i].op[]=='='){
int pa=find(kk[i].a);
int pb=find(kk[i].b);
if(pa!=pb){
fa[pa]=pb;
st[pa]=;
}
}
else{
int pa=find(kk[i].a);
int pb=find(kk[i].b);
if(pa==pb)flag=;
}
}
if(!flag)puts("CONFLICT");//所给信息矛盾
else{
for(int i=;i<m;i++){
if(kk[i].op[]=='>'){
add(find(kk[i].a),find(kk[i].b));
IN[find(kk[i].b)]++;
}
else if(kk[i].op[]=='<'){
add(find(kk[i].b),find(kk[i].a));
IN[find(kk[i].a)]++;
}
}
memset(vis,,sizeof(vis));
if(!OK(n))puts("CONFLICT");//有环
else{
queue <int> q;
for(int i=;i<n;i++){
if(!st[i] && !IN[i])
q.push(i);
}
int flag=;
while(!q.empty()){
if(q.size()>){
flag=;
break;
}
int u=q.front();
q.pop();
for(int i=head[u];i!=-;i=e[i].nxt){
int v=e[i].t;
IN[v]--;
if(!IN[v])q.push(v);
}
}
if(!flag)puts("UNCERTAIN");//拓扑结构一层多于一个点,有多种情况
else puts("OK");
}
}
}
return ;
}
HDU 1811的更多相关文章
- ACM: hdu 1811 Rank of Tetris - 拓扑排序-并查集-离线
hdu 1811 Rank of Tetris Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & % ...
- HDU 1811 拓扑排序 并查集
有n个成绩,给出m个分数间的相对大小关系,问是否合法,矛盾,不完全,其中即矛盾即不完全输出矛盾的. 相对大小的关系可以看成是一个指向的条件,如此一来很容易想到拓扑模型进行拓扑排序,每次检查当前入度为0 ...
- HDU 1811 Rank of Tetris(并查集按秩合并+拓扑排序)
Rank of Tetris Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 1811 Rank of Tetris
http://acm.hdu.edu.cn/showproblem.php?pid=1811 拓扑排序和并差集 #include <cstdio> #include <queue&g ...
- hdu 1811 Rank of Tetris - 拓扑排序 - 并查集
自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜, ...
- HDU 1811:Rank of Tetris(并查集+拓扑排序)
http://acm.hdu.edu.cn/showproblem.php?pid=1811 Rank of Tetris Problem Description 自从Lele开发了Rating系 ...
- HDU 1811 并查集+拓扑排序
Rank of Tetris 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1811 Problem Description 自从Lele开发了Rati ...
- HDU 1811 Rank of Tetris(拓扑排序+并查集)
题目链接: 传送门 Rank of Tetris Time Limit: 1000MS Memory Limit: 32768 K Description 自从Lele开发了Rating系统, ...
- HDU 1811 并查集
题意: 思路:topo+并查集 #include <cstdio> #include <vector> #include <algorithm> #include ...
随机推荐
- iOS开发UIScrollView的底层实现
起始 做开发也有一段时间了,经历了第一次完成项目的激动,也经历了天天调用系统的API的枯燥,于是就有了探索底层实现的想法. 关于scrollView的思考 在iOS开发中我们会大量用到scrollVi ...
- Javascript之高效编程
前言: Javascript绝对是最火的编程语言之一,一直具有很大的用户群,具有广泛的应用前景.而在前端开发中,它也是三驾马车之一,并且是最重要的一环.要想给用户提供更流畅的操作体验,更友好的交互,对 ...
- Java集合——Map接口
1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V put(key,value) ...
- 转载Javascript继承两种形式详解
一直想对Javascript再次做一些总结,正好最近自己写了一个小型Js UI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面.这里仅仅是把自己的学习体会拿出来分 ...
- css3内容溢出属性
overflow是css2.0的属性,css3中新增了overflow-x和overflow-y属性. overflow-x主要是用来定义对水平方向内容溢出的剪切,而overflow-y主要是用来定义 ...
- php不解析的排查步骤
php不解析的排查步骤:1. /usr/local/apache2/bin/apachectl -M 看一下有没有加载libphp5.so2. 查看配置文件中是否有 AddType applicati ...
- 在完成一个异步任务后取消剩余任务(C#)
完整实例 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System. ...
- HTTPS是如何保证连接安全,你知道吗?
HTTPS协议的工作原理是什么?”这是我在数天前工作项目中需要解决的问题. 作为一名Web开发者,我当然知道 HTTPS 协议是保障用户敏感数据的好办法,但并不知道这种协议的内在工作机制. 它怎么保护 ...
- 摄像机导致的粒子效果混乱出错变成贴图sprite显示在镜头前
只要把出错的摄像机记的标签改成maincamera问题就消失了!! 我之前一直以为是烘培导致的问题!
- HDU 3533 Escape bfs 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=3533 一道普通的bfs,但是由于代码实现出了bug还是拖了很久甚至对拍了 需要注意的是: 1.人不能经过炮台 2 ...