HDU 1704 Rank floyd求传递闭包 || bfs
2017-08-17 08:55
323 查看
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1704题意:
有n个人m条胜负关系,胜负是可以传递的,即x−>y且y−>z则有x−>z,问任意选两人有多少对不能确定胜负关系思路:
floyd求传递闭包,统计没有关系的数量即可。bfs也可以floyd:
#include <bits/stdc++.h> using namespace std; const int N = 500 + 10, INF = 0x3f3f3f3f; bool mp ; void floyd(int n) { for(int k = 1; k <= n; k++) for(int i = 1; i <= n; i++) if(mp[i][k]) for(int j = 1; j <= n; j++) mp[i][j] = mp[i][j] || (mp[i][k] && mp[k][j]); } int main() { int t, n, m; scanf("%d", &t); while(t--) { memset(mp, 0, sizeof mp); scanf("%d%d", &n, &m); int v, u; for(int i = 1; i <= m; i++) { scanf("%d%d", &v, &u); mp[v][u] = true; } floyd(n); int ans = 0; for(int i = 1; i <= n; i++) for(int j = i+1; j <= n; j++) if(! mp[i][j] && ! mp[j][i]) ans++; printf("%d\n", ans); } return 0; }
bfs:
#include <bits/stdc++.h> using namespace std; const int N = 500 + 10, INF = 0x3f3f3f3f; struct edge { int to, next; }g[N*N]; int cnt, head ; bool vis ; void add_edge(int v, int u) { g[cnt].to = u, g[cnt].next = head[v], head[v] = cnt++; } int bfs(int v) { queue<int> que; memset(vis, 0, sizeof vis); int tot = 0; que.push(v), vis[v] = true; while(! que.empty()) { int v = que.front(); que.pop(); for(int i = head[v]; i != -1; i = g[i].next) { int u = g[i].to; if(! vis[u]) que.push(u), vis[u] = true, tot++; } } return tot; } int main() { int t, n, m; scanf("%d", &t); while(t--) { cnt = 0; memset(head, -1, sizeof head); scanf("%d%d", &n, &m); int v, u; for(int i = 1; i <= m; i++) { scanf("%d%d", &v, &u); add_edge(v, u); } int num = 0; for(int i = 1; i <= n; i++) num += bfs(i); printf("%d\n", n * (n-1) / 2 - num); } return 0; }
相关文章推荐
- HDU 1704 Rank【传递闭包】
- HDU 1704 Rank (传递闭包)
- HDU 1704 Rank (关系闭包)
- hdu-1704 Rank
- hdu 1704 Rank
- HDU 1317 XYZZ(Floyd(传递闭包)+bellmanfd(判断正权环))
- POJ 1975 Median Weight Bead floyd求传递闭包 || bfs
- hdu - 1704 Rank(简单dfs)
- HDU 1704 Rank (floyd传递闭包)
- HDU 2992 Hotel booking(BFS+DFS 或者 SPFA+Floyd)
- hdu 1704(传递闭包)
- HDU 1704 rank(floyd闭包+剪枝)
- HDU 1317--XYZZY 【spfa判断正环求最长路径 && floyd求传递闭包】
- POJ 3275 Ranking the Cows floyd求传递闭包 || bfs
- hdu 1704 Rank (floyd闭包)
- HDU 1704 Rank
- hdu 1704 rank 传递闭包
- hdu 1704 Rank(floyd传递闭包)
- POJ 3660 Cow Contest floyd求传递闭包 || bfs
- hdu1704——floyd