【Floyd 判断关系】POJ - 3660 Cow Contest
2017-06-24 10:42
330 查看
Problem Description
给你n头牛,m个关系。让你判断能确认排名的牛有几头。m行,每行u,v代表u比v强。
Sample Input
5 5
4 3
4 2
3 2
1 2
2 5
Sample Output
2
思路:对于上面的样例能确定排名的牛是2,5。FLoyd把所有能联系的联系在一次,如果和n-1头牛有联系,就能确认排名
给你n头牛,m个关系。让你判断能确认排名的牛有几头。m行,每行u,v代表u比v强。
Sample Input
5 5
4 3
4 2
3 2
1 2
2 5
Sample Output
2
思路:对于上面的样例能确定排名的牛是2,5。FLoyd把所有能联系的联系在一次,如果和n-1头牛有联系,就能确认排名
#include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; int main() { int Map[105][105]; int n, m, u, v, i, j, k; while(~scanf("%d %d", &n, &m)) { memset(Map, 0, sizeof(Map)); while(m--) { scanf("%d %d", &u, &v); Map[u][v] = 1; } //Floyd for(k = 1; k <= n; k++) { for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { if(i != j && Map[i][k] && Map[k][j]) { Map[i][j] = 1; } } } } int ans = 0; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { if(i != j) { if(!Map[i][j] && !Map[j][i]) break; } } if(j > n) ans++; //i和其他n-1头牛有关系 } printf("%d\n", ans); } return 0; }
相关文章推荐
- POJ 3660 Cow Contest (floyd求联通关系)
- POJ 3660 Cow Contest (Floyd 传递闭包判连通)
- poj 3660 Cow Contest ----floyd 传递闭包
- poj 3660 Cow Contest(最短路floyd)
- POJ 3660 Cow Contest(Floyd最短路)
- Cow Contest(POJ 3660)(Floyd)(任意两点间最短路)
- (中等) POJ 3660 Cow Contest,Floyd。
- Floyd_Warshall POJ 3660 Cow Contest
- POJ 3660 Cow Contest(Floyd)
- Poj 3660 Cow Contest(Floyd)
- POJ 3660 Cow Contest (Floyd求传递闭包)
- Floyd传递闭包-POJ-3660-Cow Contest
- POJ3660 Cow Contest(floyd)
- POJ - 3660 Cow Contest(Floyd)
- POJ 3660 Cow Contest.(Floyd,传递闭包).
- POJ - 3660 Cow Contest (floyd变形)
- POJ 3660 Cow Contest 最短路floyd
- POJ 3660 Cow Contest (Floyd 传递闭包)
- POJ 3660 Cow Contest(Floyd求传递闭包)
- POJ 3660 Cow Contest(Floyd)