http://www.cnblogs.com/newpanderking/archive/2012/10/18/2729566.html

#include<stdio.h>

#include<iostream>

#include<vector>

#include<queue>

using namespace std;

const int N=11000;

vector<int>link[N];//容器来是模拟邻接表

int pre[N],a[N],b[N],indegree[N],n,m,sum;

char c[N];

int find(int x) {//路径压缩

if(x!=pre[x])

pre[x]=find(pre[x]);

return pre[x];

}

int Union(int x,int y) {//合并

int f1=find(x);

int f2=find(y);

if(f1==f2)

return 0;

pre[f1]=f2;

return 1;

}

void bfs() {

       queue<int>q;

  int i,flag;

  for(i=0;i<n;i++) {

  if(find(i)==i&&indegree[i]==0)//将所有第一名的代表放进队列

  q.push(i);

  }   flag=0;

  while(!q.empty()) {//队列实现拓扑排序

  int cur=q.front();

  if(q.size()>1)flag=1;//信息已经不完整了,但是还有可能含有冲突

  q.pop();////和上面的q.size()的判断的顺序不能交换

  for(i=0;i<link[cur].size();i++)

  if(--indegree[link[cur][i]]==0)

  q.push(link[cur][i]);

  sum--;

  }

  if(sum>0)//冲突优先

  printf("CONFLICT\n");

  else

  if(flag==1)//没有冲突了看信息是否完整

  printf("UNCERTAIN\n");

  else

  printf("OK\n");

}

int main() {

int i,f1,f2;

while(scanf("%d%d",&n,&m)!=EOF) {

for(i=0;i<n;i++) {//初始化

link[i].clear();

pre[i]=i;

}

sum=n;

for(i=0;i<m;i++) {

scanf("%d %c%d",&a[i],&c[i],&b[i]);

if(c[i]=='=') 

if(Union(a[i],b[i]))

sum--;

}

memset(indegree,0,sizeof(indegree));//入度

for(i=0;i<m;i++)

if(c[i]!='=') {

f1=find(a[i]);

f2=find(b[i]);

if(c[i]=='>') {

link[f1].push_back(f2);

indegree[f2]++;

}

else {

link[f2].push_back(f1);

indegree[f1]++;

}

}

bfs();

}

return 0;

}

hdu 1811拓扑排序+并查集(容器实现)的更多相关文章

  1. HDU 1811 拓扑排序 并查集

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

  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 Rank of Tetris - 拓扑排序 - 并查集

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

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

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

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

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

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

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

  7. LA 4255 (拓扑排序 并查集) Guess

    设这个序列的前缀和为Si(0 <= i <= n),S0 = 0 每一个符号对应两个前缀和的大小关系,然后根据这个关系拓扑排序一下. 还要注意一下前缀和相等的情况,所以用一个并查集来查询. ...

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

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

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

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

随机推荐

  1. bzoj 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课【spfa】

    洛谷的数据毒啊 把(i,j,k)作为一个点spfa,表示点(i,j)朝向k方向,然后向四个方向转移即可 #include<iostream> #include<cstdio> ...

  2. 10.16NOIP模拟赛

    /* 我是一个大sb */ #include<iostream> #include<cstdio> #include<cstring> #include<qu ...

  3. OAuth2.0最简向导

    无论你是否有技术背景,你都能看懂授权协议框架OAuth2.0 翻译来自:川崎高彦对自己投资人讲解自己的SaaS安全产品. Got it! https://medium.com/@darutk/the- ...

  4. [APIO2007]动物园

    题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 你是动物园的公共主管.你要做的是,让每个来动物园的人都尽可能高兴.今天有一群小朋 ...

  5. Unity笔记(2)自学第一天

    学习记录: 界面使用:

  6. ElasticSearch学习笔记--安装

    1.安装ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html 这 ...

  7. 外观模式(Facade)-子系统的协作与整合-接口模式

    对子系统进行整合,对外提供更强大或更便捷的接口. 在一个模块和几个子系统进行通信时考虑. 什么是外观模式? 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口 ...

  8. 扩增子分析解读5物种注释 OTU表操作

    本节课程,需要先完成<扩增子分析解读>系列之前的操作 1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 4去嵌合体 非细菌序列 ...

  9. CAD绘制一个图象标记对象(com接口VB语言)

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  10. 校内测之zay与银临 (day2)(只有T1)

    一些与题目无关的碎碎念 推出式子来一定要化简!!!freopen不要写错!!!特判不要瞎搞!!!! 做到以上三点能高35分qwq T1 江城唱晚 你看数据那么大,显然又是一道数学题. 这里有n个种海棠 ...