标签:
Description
N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we all know, some cows code better than others. Each cow has a certain constant skill rating that is unique among the competitors.
The contest is conducted in several head-to-head rounds, each between two cows. If cow A has a greater skill level than cow B (1 ≤ A ≤ N; 1 ≤ B ≤ N; A ≠ B), then cow A will always beat cow B.
Farmer John is trying to rank the cows by skill level. Given a list the results of M (1 ≤ M ≤ 4,500) two-cow rounds, determine the number of cows whose ranks can be precisely determined from the results. It is guaranteed that the results of the rounds will not be contradictory.
Input
Output
Sample Input
5 5
4 3
4 2
3 2
1 2
2 5
Sample Output
2
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef long long ll;
const int N = 105;
int G[N][N];
int n, m, t;
void floyd() {
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
G[i][j] = G[i][j] || (G[i][k] & G[k][j]);
}
}
}
}
int main() {
while (scanf("%d %d", &n, &m) != EOF) {
memset(G, 0, sizeof(G));
int a, b;
for (int i = 0; i < m; i++) {
scanf("%d%d", &a, &b);
G[a][b] = 1;
}
floyd();
int ans = 0;
for (int i = 1; i <= n; i++) {
int cnt = 0;
for (int j = 1; j <= n; j++) {
if (G[i][j]) cnt++;
if (G[i][j]) cnt++;
}
if (cnt == n - 1) ans++;
}
printf("%d\n", ans);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许也可以转载,不过要注明出处哦。
poj 3660 Cow Contest(warshall算法)
标签:
原文地址:http://blog.csdn.net/llx523113241/article/details/47175777