博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1811 Rank of Tetris
阅读量:6692 次
发布时间:2019-06-25

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

并查集+拓扑排序

把等号的那些东西都用并查集合并一下,这样一来,建立邻接表的时候用根来建立就好了。

然后就是拓扑排序。

如果有两个入度为0的节点,那么说明肯定是条件不足,

如果有成环的肯定是没法排序了。

#include
#include
#include
#include
#include
using namespace std;const int maxn = 10010;const int maxnn = 20010;int u[maxnn], v[maxnn], s[maxnn][2];int father[maxn], rudu[maxn], ff[maxn], yy[maxn];vector
ljb[maxn];int find(int x){ while (father[x] != x) x = father[x] = father[father[x]]; return father[x];}int main(){ int n, m, i, ii, j; while (~scanf("%d%d", &n, &m)) { int jieguo = 1; for (i = 0; i <= n; i++) father[i] = i; memset(rudu, 0, sizeof(rudu)); memset(ff, 0, sizeof(ff)); for (i = 0; i <= n; i++) ljb[i].clear(); for (i = 0; i < m; i++) scanf("%d%s%d", &u[i], s[i], &v[i]); for (i = 0; i < m; i++) { if (s[i][0] == '=') { int fu = find(u[i]); int fv = find(v[i]); father[fu] = fv; } } int tott = 0; for (i = 0; i < n; i++) { int gen = find(i); if (ff[gen] == 0){ yy[tott] = gen; tott++; ff[gen] = 1; } } for (i = 0; i < m; i++) { if (s[i][0] == '>') { int fu = find(u[i]); int fv = find(v[i]); ljb[fu].push_back(fv); rudu[fv]++; } else if (s[i][0] == '<') { int fu = find(u[i]); int fv = find(v[i]); ljb[fv].push_back(fu); rudu[fu]++; } } int summ, r, cun[maxn], tongji = 0; while (1) { if (tongji == tott) break; summ = 0; for (i = 0; i < tott; i++) if (rudu[yy[i]] == 0) cun[summ] = yy[i], summ++, r = yy[i]; if (summ !=0) { tongji = tongji + summ; if (summ >= 2)jieguo = 3; for (i = 0; i < summ; i++) { rudu[cun[i]]--; for (j = 0; j < ljb[cun[i]].size(); j++) rudu[ljb[cun[i]][j]]--; } } if (summ == 0){ jieguo = 2; break; } } if (jieguo == 1) printf("OK\n"); else if (jieguo == 2) printf("CONFLICT\n"); else if (jieguo == 3) printf("UNCERTAIN\n"); } return 0;}

 

转载于:https://www.cnblogs.com/zufezzt/p/4551755.html

你可能感兴趣的文章
vs2010在进行数据架构比较时报'text lines should not be null'错误
查看>>
jeecg入门操作—表单界面
查看>>
网页音乐制作器(网页钢琴)-- MusicMaker
查看>>
oracle优化:避免全表扫描(高水位线)
查看>>
对超级课程表产品的一些个人小看法
查看>>
词频统计 效能分析
查看>>
Linux终极shell-zsh的完美配置方案!——oh-my-zsh
查看>>
MYSQL 函数、自定义函数 function
查看>>
Python爬虫之简单爬虫框架实现
查看>>
python isinstance内建函数的使用
查看>>
老师不能把你怎样,但外面的世界可以!
查看>>
css居中div的几种常用方法
查看>>
css3
查看>>
根据某个元素做相对定位
查看>>
C# Window编程随记——ClickOnce程序部署
查看>>
小白系列-免费广告路由器web认证设置(2)
查看>>
Top 16 Java 应用类 - 这些功能再也不用自己写了
查看>>
面试题之矩阵与转置矩阵相乘
查看>>
linux光盘、U盘的挂载与卸载
查看>>
linux sudo命令
查看>>