题目:http://acm.hdu.edu.cn/showproblem.php?pid=5961

题目为中文,这里就不描述题意了。

思路:

从题目陈述来看,他将一个有向图用一个邻接矩阵来表示,并且分为两个图P、Q,但是它们是有内在联系的,即:P+Q,抛去方向即为完全图。

题目都是中文,这里就不翻译了。我们可以从题目中知道,如果P、Q均满足传递性,那么P与(Q的反向图)生成的有向图应该无环。

所以,简单一个拓扑排序检查是否有环即可,P、Q合为一张图,跑一遍,这个还是很快的。

时长:3432MS

代码如下:

 #include <iostream>
#include <stdio.h>
#include <queue>
#include <vector>
using namespace std;
vector<int> edge[];
queue<int> Q;
int m, n, inDegree[]; int main()
{
scanf("%d\n", &n);
while (n--)
{
scanf("%d\n", &m);
memset(inDegree, , sizeof inDegree);
for (int i = ; i<=m; i++) edge[i].clear();
while (!Q.empty()) Q.pop(); for (int i = ; i <= m; ++i)
for (int j = ; j <= m; ++j)
{
char ch;
cin >> ch;
if (ch == 'P')
inDegree[j]++, edge[i].push_back(j);
if (ch == 'Q')
inDegree[i]++, edge[j].push_back(i);
}
for (int i = ; i<=m; i++)
if (!inDegree[i])
Q.push(i);
int cnt = , newP;
while (!Q.empty()) {
newP = Q.front(), Q.pop();
cnt++;
for (int i = ; i<edge[newP].size(); i++) {
inDegree[edge[newP][i]]--;
if (inDegree[edge[newP][i]] == )
Q.push(edge[newP][i]);
}
}
if (cnt == m) printf("T\n");
else printf("N\n");
}
}

感谢您的阅读,生活愉快~

传递 hdu 5961 拓扑排序有无环~的更多相关文章

  1. Legal or Not(拓扑排序判环)

    http://acm.hdu.edu.cn/showproblem.php?pid=3342 Legal or Not Time Limit: 2000/1000 MS (Java/Others)   ...

  2. POJ 1094 Sorting It All Out(拓扑排序+判环+拓扑路径唯一性确定)

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39602   Accepted: 13 ...

  3. HDU 4857 拓扑排序 优先队列

    n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...

  4. HDU 1811 拓扑排序 并查集

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

  5. 【CodeForces】915 D. Almost Acyclic Graph 拓扑排序找环

    [题目]D. Almost Acyclic Graph [题意]给定n个点的有向图(无重边),问能否删除一条边使得全图无环.n<=500,m<=10^5. [算法]拓扑排序 [题解]找到一 ...

  6. LightOJ1003---Drunk(拓扑排序判环)

    One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So ...

  7. hdu 2647 (拓扑排序 邻接表建图的模板) Reward

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2647 老板给员工发工资,每个人的基本工资都是888,然后还有奖金,然后员工之间有矛盾,有的员工希望比某员 ...

  8. HDU1811 拓扑排序判环+并查集

    HDU Rank of Tetris 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1811 题意:中文问题就不解释题意了. 这道题其实就是一个拓扑排序判圈 ...

  9. hdu 4324 拓扑排序

    题意:给出一堆人的喜爱关系,判断有没有三角恋-_-|| 其实就是判断是否存在三条边的环. 一开始我是这么想的: 先拓扑排序,如果没有环那就直接No 如果有环?挑出环里的任意一个点(拓扑排序结束后不在拓 ...

随机推荐

  1. ArcGis10.1 Feature Class Properties无法编辑

    被这个问题困扰了很久,最后从官网帮助中查询到资料解决了 先看一下截图: 这种问题一般是FratureClass被锁,被mxd引用,并且发布服务有实例在运行,但我新创建一个FeatureClass也无法 ...

  2. Scrapy可视化管理软件SpiderKeeper

    通常开发好的Scrapy爬虫部署到服务器上,要不使用nohup命令,要不使用scrapyd.如果使用nohup命令的话,爬虫挂掉了,你可能还不知道,你还得上服务器上查或者做额外的邮件通知操作.如果使用 ...

  3. POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)

    题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...

  4. vue_表单_组件

    表单.组件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  5. ES6的优雅方法

    1.箭头函数 // ES5 var selected = allJobs.filter(function (job) { return job.isSelected(); }); // ES6 var ...

  6. async语法升级踩坑小记

    从今年过完年回来,三月份开始,就一直在做重构相关的事情. 就在今天刚刚上线了最新一次的重构代码,希望高峰期安好,接近半年的Node.js代码重构. 包含从callback+async.waterfal ...

  7. 关于new Handler()与new Handler(Looper.getMainLooper())区别

    如果你不带参数的实例化:Handler handler=new Handler();那么这个会默认用当前线程的Looper对象. 一般而言,如果你的Handler是要用来刷新UI的,那么就需要在主线程 ...

  8. Python基础之多线程事件Event

    import threading,time class Boss(threading.Thread): def run(self): print("BOSS:伙计们今晚上加班到22:00&q ...

  9. JS判断是否是PC端访问网站

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  10. angular架构

    angular架构包括以下部分: 1.模块 2.组件 3.模板 4.元数据 5.数据绑定 6.指令 7.服务 8.依赖注入 9.动画 10.变更检测 11.事件 12.表单 13.HTTP 14.生命 ...