博客
关于我
HDU - 1811 Rank of Tetris 并查集 + 拓扑序
阅读量:251 次
发布时间:2019-03-01

本文共 1907 字,大约阅读时间需要 6 分钟。

题意:

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

//#pragma GCC optimize(2)#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#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
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
q; for(int i=0;i
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
') 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;}/**/

转载地址:http://nslx.baihongyu.com/

你可能感兴趣的文章
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>