Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
It is known that there are n cattle, m times of combat relationship. Ask the number of cattle that can finally determine the ranking.
Input
For multiple groups of test data, for each group of test data, input two integers n (1 < = n < = 100) and m (0 < = m < = 4950) in the first row, respectively, to indicate that there are n cattle and m times of combat relationship, and then input two positive integers x and Y in each row of m to indicate that cattle with No. x can defeat cattle with No. y, the data is legal, and query can determine the number of cattle in the ranking.
Output
For each group of test data, the output integer ans indicates the number of cows that can determine the ranking.
Sample Input
5 5 4 3 4 2 3 2 1 2 2 5Sample Output
2#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; int ralationship[105][105];///Array to determine if there is a relationship void f(int);///Calculate transfer relationship int main() { int n, m, i, j, x, y, sum1, sum2; while(~scanf("%d %d", &n, &m)) { memset(ralationship, 0, sizeof(ralationship)); while(m--) { scanf("%d %d", &x, &y); ralationship[x][y] = 1;///Enter the two cows that determine the relationship } f(n);///Call function to calculate transfer relationship sum2 = 0;///Number of cows that can be ranked for(i = 1; i <= n; i++) { sum1 = 0;///Number of relationships between cattle i and other n - 1 cattle for(j = 1; j <= n; j++) { if(i == j) continue;///If i = j points to a cow, there is no operation in this cycle if(ralationship[i][j] || ralationship[j][i]) sum1++;///If i is related to j-n, sum1++ } if(sum1 == n - 1) sum2++;///If sum1 = n - 1, that is, the relationship between this cow and other N - 1 cows is determined, then its ranking is determined } printf("%d\n", sum2); } return 0; } void f(int n) { int i, j, k; for(k = 1; k <= n; k++) { for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) {///When I beat J or (I beat k and k beat J) holds at least one, i.e. the relationship between I and j is determined and assigned as 1 ralationship[i][j] = ralationship[i][j] || (ralationship[i][k] && ralationship[k][j]); } } } }