HDU NO.4324 Triangle LOVE(拓扑排序)
来源:互联网 发布:bioeffect蓓欧菲 知乎 编辑:程序博客网 时间:2024/06/18 14:46
题意:
如果A爱B,那么B就一定不爱A --!.
大致意思是,在图中能不能找到三角环。
原题描述:
Description
Recently, scientists find that there is love between any of two people. For example, between A and B, if A don’t love B, then B must love A, vice versa. And there is no possibility that two people love each other, what a crazy world!
Now, scientists want to know whether or not there is a “Triangle Love” among N people. “Triangle Love” means that among any three people (A,B and C) , A loves B, B loves C and C loves A.
Your problem is writing a program to read the relationship among N people firstly, and return whether or not there is a “Triangle Love”.
Now, scientists want to know whether or not there is a “Triangle Love” among N people. “Triangle Love” means that among any three people (A,B and C) , A loves B, B loves C and C loves A.
Your problem is writing a program to read the relationship among N people firstly, and return whether or not there is a “Triangle Love”.
Input
The first line contains a single integer t (1 <= t <= 15), the number of test cases.
For each case, the first line contains one integer N (0 < N <= 2000).
In the next N lines contain the adjacency matrix A of the relationship (without spaces). A i,j = 1 means i-th people loves j-th people, otherwise A i,j = 0.
It is guaranteed that the given relationship is a tournament, that is, A i,i= 0, A i,j ≠ A j,i(1<=i, j<=n,i≠j).
For each case, the first line contains one integer N (0 < N <= 2000).
In the next N lines contain the adjacency matrix A of the relationship (without spaces). A i,j = 1 means i-th people loves j-th people, otherwise A i,j = 0.
It is guaranteed that the given relationship is a tournament, that is, A i,i= 0, A i,j ≠ A j,i(1<=i, j<=n,i≠j).
Output
For each case, output the case number as shown and then print “Yes”, if there is a “Triangle Love” among these N people, otherwise print “No”.
Take the sample output for more details.
Take the sample output for more details.
Sample Input
25001001000001001111011100050111100000010000110001110
Sample Output
Case #1: YesCase #2: No
思路:
可以吧图中是“1”的坐标构成有向图,然后拓扑排序,如果结果没有拓扑序列即有环也就是存在三角恋 --!
代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cmath>#include<queue>#include<stack>#include<cstring>#include<string>#include<vector>#include<set>using namespace std;#define X first#define Y secondconst int INF = 0x3f3f3f3f;const int MAX = 3000;int head[MAX], indegree[MAX], que[MAX];int top, n;struct node{ int to, w, next;}edge[MAX * MAX];void add_edge(int u, int v){ edge[top].to = v; edge[top].next = head[u]; head[u] = top++;}void init(){ top = 0; memset(head, -1, sizeof(head)); memset(indegree, 0, sizeof(indegree));}bool Topsort(){ int iq = 0; for(int i = 0; i < n; i++) if(indegree[i] == 0) que[iq++] = i; for(int i = 0; i < iq; i++){ for(int j = head[que[i]]; j != -1; j = edge[j].next){ indegree[edge[j].to]--; if(indegree[edge[j].to] == 0) que[iq++] = edge[j].to; } } if(iq < n - 1) return true; else return false;}int main(){ int t, cns = 1; scanf("%d", &t); while(t--){ init(); scanf("%d", &n); char arr[n][n]; for(int i = 0; i < n; i++){ scanf("%s", &arr[i]); for(int j = 0; j < n; j++){ if(arr[i][j] == '1'){ add_edge(i, j); indegree[j]++; } } } int res = Topsort(); if(res) printf("Case #%d: Yes\n", cns++); else printf("Case #%d: No\n", cns++); } return 0;}
0 0
- HDU NO.4324 Triangle LOVE(拓扑排序)
- HDU 4324 Triangle LOVE (拓扑排序)
- hdu 4324 Triangle LOVE(拓扑排序)
- HDU 4324 Triangle LOVE(拓扑排序)
- HDU 4324 Triangle LOVE(拓扑排序)
- HDU 4324题Triangle LOVE(拓扑排序)
- HDU 4324 Triangle LOVE(拓扑排序)
- HDU 4324:Triangle LOVE( 拓扑排序 )
- HDU 4324 Triangle LOVE 拓扑排序
- hdu 4324 Triangle LOVE 拓扑排序
- HDU 4324 Triangle LOVE 【拓扑排序】
- HDU 4324:Triangle LOVE【拓扑排序】
- HDU 4324 Triangle LOVE 拓扑排序
- HDU 4324 Triangle LOVE (拓扑排序)
- 【HDU 4324 Triangle LOVE】 + 拓扑排序
- hdu 4324 Triangle LOVE(拓扑排序)
- HDU 4324 Triangle LOVE(拓扑排序)
- HDU - 4324 Triangle LOVE(拓扑排序 + 判断环路)
- java之Asymmetric encryption techniques
- 十字图
- EL表达式语言
- ACM-2009
- Cocos2dx:3.10+cocostudio多屏幕分辨率适配解决方案
- HDU NO.4324 Triangle LOVE(拓扑排序)
- C++中的endl搭配cout和cin用法
- Unity Shaders and Effects Cookbook (3-6) 创建各向异性高光类型(Anisotropic) 模拟金属拉丝效果
- 系统性能指标:广义并发、狭义并发、吞吐量、平均响应时间、TPS、IOPS
- .net(C#)访问Oracle数据库的几种免安装组件的对比
- UITableView 总结
- 判断平年闰年
- *LeetCode 114. Flatten Binary Tree to Linked List
- Linux进程间通信