hdoj 4324 Triangle LOVE 【拓扑】
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”.
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). Ai,j = 1 means i-th people loves j-th people, otherwise Ai,j = 0.
It is guaranteed that the given relationship is a tournament, that is, Ai,i= 0, Ai,j ≠ Aj,i(1<=i, j<=n,i≠j).
Take the sample output for more details.
2
5
00100
10000
01001
11101
11000
5
01111
00000
01000
01100
01110
Case #1: Yes
Case #2: No
题意:给出你全部人的关系。然后让你推断一下是否存在三角恋或多角恋。
分析:我们能够依据关系建一个有向图,假如A喜欢B那么就让A指向B。假如存在三角恋或多角恋那么肯定会形成一个环,我选择用拓扑排序,假设形成环的话肯定不会把全部的数都排序。
注意:用链式前向星的话,边的数组要开到2000*1999之上。。RE了好几次。
心得: 比赛的时候没有想到拓扑。仅仅是想到了并查集。左后还是没有做出来。
并查集能够推断一棵树是不是成环,拓扑才干够推断一个图是不是成环。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define M 2005
struct node{
int to, next;
}s[20000005];
int in[M], head[M], n, tot, queue[M];
char map[M][M];
void getmap(int a, int b){
s[tot].to = b;
in[b]++;
s[tot].next = head[a];
head[a] = tot++;
}
int toposort(){
bool vis[M];
memset(vis, false, sizeof(vis));
int i, j, iq = 0;
for(i = 0; i < n; i ++){
if(!in[i]){
queue[iq++] = i;
vis[i] = 1;
}
}
for(i = 0; i < iq; i++){
int temp = head[queue[i]];
for(j = temp; j != -1; j = s[j].next){
if(!(--in[s[j].to])){
queue[iq++] = s[j].to;
}
}
}
if(iq < n) return 1;
else return 0;
}
int main(){
int t, v = 1;
scanf("%d", &t);
while(t --){
memset(in, 0, sizeof(in));
memset(head, -1, sizeof(head));
tot = 0;
scanf("%d", &n);
int i, j, flag;
for(i = 0; i < n; i ++){
scanf("%s", map[i]);
for(j = 0; j < n; j ++){
if(map[i][j] == '1'){
getmap(i, j);
}
}
}
printf("Case #%d: ", v++);
flag = toposort();
if(flag) printf("Yes\n");
else printf("No\n");
}
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
hdoj 4324 Triangle LOVE 【拓扑】的更多相关文章
- hdoj 4324 Triangle LOVE【拓扑排序判断是否存在环】
Triangle LOVE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 拓扑排序/DFS HDOJ 4324 Triangle LOVE
题目传送门 题意:判三角恋(三元环).如果A喜欢B,那么B一定不喜欢A,任意两人一定有关系连接 分析:正解应该是拓扑排序判环,如果有环,一定是三元环,证明. DFS:从任意一点开始搜索,搜索过的点标记 ...
- HDU 4324 Triangle LOVE 拓扑排序
Problem Description Recently, scientists find that there is love between any of two people. For exam ...
- hdu 4324 Triangle LOVE
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4324 Triangle LOVE Description Recently, scientists f ...
- HDU 4324 Triangle LOVE (拓扑排序)
Triangle LOVE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- hdu 4324 Triangle LOVE(拓扑判环)
Triangle LOVE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- hdu 4324 Triangle LOVE(拓扑排序,基础)
题目 /***************************参考自****************************/ http://www.cnblogs.com/newpanderking ...
- HDU - 4324 Triangle LOVE(拓扑排序)
https://vjudge.net/problem/HDU-4324 题意 每组数据一个n表示n个人,接下n*n的矩阵表示这些人之间的关系,输入一定满足若A不喜欢B则B一定喜欢A,且不会出现A和B相 ...
- HDU 4324 Triangle LOVE【拓扑排序】
题意:给出n个人,如果a喜欢b,那么b一定不喜欢a,如果b不喜欢a,那么a一定喜欢b 就是这n个点里面的任意两点都存在一条单向的边, 所以如果这n个点不能构成拓扑序列的话,就一定成环了,成环的话就一定 ...
随机推荐
- 【转】Android内存机制分析1——了解Android堆和栈
昨天用Gallery做了一个图片浏览选择开机画面的功能,当我加载的图片多了就出现OOM问题.以前也出现过这个问题,那时候并没有深究.这次打算好好分析一下Android的内存机制. 因为我以前是做VC+ ...
- iOS经常使用快捷键
iOS经常使用的快捷键 command+[:左缩进 command+]:右缩进 control-F: 向右一个字符(forward) control-B: 向左一个字符(backward) cont ...
- apache本地多域配置(wampserver本地多域配置)
当我们在当地发展.通常在浏览器中输入 http://localhost/项目目录名 测试Web文件,你有没有想过在本地浏览器中,输入自己设定的名字进入项目目录,名相关的问题. 比方我想配置一个主域名w ...
- 播放视频的框架Vitamio的使用问题
曾经用过这个牛逼的框架,后来又任意搞了下.发现播放不了视频了.搞了老半天才搞好,今天又随便整了下,发现又不行了.我勒个插! 如今最终又搞出来了,发现我总是把步骤搞错或少写了些东西 总的步骤: 一:导入 ...
- UI设计规范
iphone\ipad.android UI设计规范对比 http://blog.163.com/leenell@yeah/blog/static/95840991201302210451710/ A ...
- 网络语音视频技术浅议 Visual Studio 2010(转)
我们在开发实践中常常会涉及到网络语音视频技术.诸如即时通讯.视频会议.远程医疗.远程教育.网络监控等等,这些网络多媒体应用系统都离不开网络语音视频技术.本人才疏学浅,对于网络语音视频技术也仅仅是略知皮 ...
- CentOS7 安装Hbase集群
继续接上一章,已安装好Hadoop集群环境 http://www.cnblogs.com/dopeter/p/4612232.html 在此基础上继续安装Hbase集群 Hbase版本为1.0.1.1 ...
- LinbDesk --- 新的extjs4.2 desktop demo : 技术交流Q群:336584192
很多朋友对extjs desktop感兴趣,就在原来简单的dsktop基础上,作了很多拓展 主要例如以下: 软件更新情况介绍: LinbDesk 拓展自Extjs 4.2的桌面Demo 拓展代码适用 ...
- malloc实现原理
记得早一段时间,看到一本书上写过delete的一个..今天突然找啦一下资料: malloc()是C语言中动态存储管理 的一组标准库函数之中的一个.其作用是在内存的动态存储区中分配一个长度为size的连 ...
- react.js 从零开始(二)组件的生命周期
什么是生命周期? 组件本质上是一个状态机,输入确定,输出一定确定. 当状态改变的时候 会触发不同的钩子函数,可以让开发者做出响应.. 一个组件的生命周期可以概括为 初始化:状态下 可以自定义的函数 g ...