Cow Contest POJ - 3660

题目链接:https://vjudge.net/problem/POJ-3660

思路:为了确定排名,那么确定排名的那头牛一定是和所有的其他牛有比较,就是说他和其他n-1头

牛有联系,就是说,u能到v,或者v能到u,flody可以实现这个,

之后我们只需统计 i-th牛能和其他几头牛有联系,如果是 n-1 头,说明他的排名能被确定。


 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <queue>
 6 #include <map>
 7 #include <cmath>
 8 #include <iomanip>
 9 using namespace std;
10  
11 typedef long long LL;
12 #define inf (1LL << 25)
13 #define rep(i,j,k) for(int i = (j); i <= (k); i++)
14 #define rep__(i,j,k) for(int i = (j); i < (k); i++)
15 #define per(i,j,k) for(int i = (j); i >= (k); i--)
16 #define per__(i,j,k) for(int i = (j); i > (k); i--)
17 
18 const int N = 110;
19 int G[N][N];
20 
21 int main(){
22 
23     ios::sync_with_stdio(false);
24     cin.tie(0);
25 
26     int n,m;
27     cin >> n >> m;
28 
29     int u,v;
30     rep(i,1,m){
31         cin >> u >> v;
32         G[u][v] = true;
33     }
34 
35     rep(k,1,n) rep(i,1,n) rep(j,1,n){
36         //i -> j 或者    i -> k -> j
37         G[i][j] = G[i][j] || (G[i][k] && G[k][j]);
38     }
39 
40     int ans = 0;
41     rep(i,1,n){
42         
43         int tot = 0;
44         rep(j,1,n){
45             //有联系
46             if(G[i][j] || G[j][i]) tot++;
47         }
48         //与其他n-1头牛有联系
49         if(tot == n - 1) ans++;
50     }
51 
52     cout << ans << endl;
53 
54     getchar(); getchar();
55     return 0;
56 }

 

posted @ 2019-08-17 16:17  SummerMingQAQ  阅读(206)  评论(0编辑  收藏  举报