HDU - 4324 拓扑排序
来源:互联网 发布:猫群算法 编辑:程序博客网 时间:2024/06/15 18:44
题意:
给出n个人的喜欢关系,mp[i][j] == 1表示i喜欢j,规定若a不喜欢b,则b一定喜欢a,问这些关系中是否存在三角恋的关系,即(a->b,b->c,c->a)。
思路:
题目的要求下,显然任意两个人之间一定有一条单向边,那么可以发现如果存在环,一定至少有一个长度为3的环,画一画就能看出来。
所以这道题只需要判断是否存在环即可,可以利用拓扑排序,也可以直接dfs搜环。
代码:
#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#include <cmath>#include <iostream>#include <queue>using namespace std;const int MAXN = 2005;const int INF = 0x3f3f3f3f;const double eps = 1e-6;int indeg[MAXN], seq[MAXN]; vector <int> G[MAXN];int topo(int n) { queue <int> q; for (int i = 0; i < n; i++) { if (indeg[i] == 0) q.push(i); } int k = 0; bool res = false; while (!q.empty()) { if (q.size() != 1) res = true; int u = q.front(); q.pop(); seq[k++] = u; for(int i = 0; i < (int)G[u].size(); i++) { int v = G[u][i]; indeg[v]--; if(indeg[v] == 0) q.push(v); } } if (k < n) return -1; ///存在有向环,总之不能进行拓扑排序 if (res) return 0;///可以进行拓扑排序,并且只有唯一一种方式,seq数组即是排序完好的序列 return 1;///可以进行拓扑排序,有多种情况,seq数组是其中一种序列 } char mp[MAXN][MAXN];int main() {int T, cs = 0;scanf("%d", &T);while (T--) {int n;scanf("%d", &n);memset(indeg, 0, sizeof(indeg));for (int i = 0; i < n; i++) {scanf("%s", mp[i]);for (int j = 0; j < n; j++) {if (mp[i][j] == '1') {G[i].push_back(j); indeg[j]++;}}}printf("Case #%d: ", ++cs);if (topo(n) == -1) puts("Yes");else puts("No");}return 0;}
0 0
- hdu 4324(拓扑排序)
- hdu 4324 拓扑排序
- HDU - 4324 拓扑排序
- hdu 4324 (拓扑排序)
- hdu 4324(拓扑排序)
- 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】 + 拓扑排序
- TestNG入门——@DataProvider
- Python之日期与时间处理模块(date和datetime)
- codeforces-50A-A. Domino piling ( C && greedy && math )
- 关于volatile的用法
- ARM+LINUX路线
- HDU - 4324 拓扑排序
- MySQL权限级别
- ISP算法之Gamma校正
- kmp(pre)
- 在Labview中调用M文件(Matlab文件)
- 【win32】visual studio中"const char *"类型的实参与"LPCWSTR"类型的形参不兼容
- 【巨人的步伐以及人类的进击】BSGS algorithm
- Android 简易的音乐播放器
- Golang 代码程序案例