zoukankan      html  css  js  c++  java
  • POJ 3660 Cow Contest

    Cow Contest

    Time Limit: 1000ms
    Memory Limit: 65536KB
    This problem will be judged on PKU. Original ID: 3660
    64-bit integer IO format: %lld      Java class name: Main

     

    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 ≤ NA ≠ 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

    * Line 1: Two space-separated integers: N and M
    * Lines 2..M+1: Each line contains two space-separated integers that describe the competitors and results (the first integer, A, is the winner) of a single round of competition: A and B

     

    Output

    * Line 1: A single integer representing the number of cows whose ranks can be determined 

     

    Sample Input

    5 5
    4 3
    4 2
    3 2
    1 2
    2 5
    

    Sample Output

    2
    

    Source

     
    解题:传递闭包,一头牛的排名是确定的当且仅当比他弱的牛的头数跟比他强的牛的头数的和为n-1
     
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <climits>
     7 #include <vector>
     8 #include <queue>
     9 #include <cstdlib>
    10 #include <string>
    11 #include <set>
    12 #include <stack>
    13 #define LL long long
    14 #define pii pair<int,int>
    15 #define INF 0x3f3f3f3f
    16 using namespace std;
    17 const int maxn = 101;
    18 bool g[maxn][maxn];
    19 int n,m;
    20 void Floyd() {
    21     for(int k = 1; k <= n; ++k) {
    22         for(int i = 1; i <= n; ++i) {
    23             if(g[i][k]) {
    24                 for(int j = 1; j <= n; ++j)
    25                     if(!g[i][j]) g[i][j] = g[i][k]&&g[k][j];
    26             }
    27         }
    28     }
    29 }
    30 int main() {
    31     while(~scanf("%d %d",&n,&m)) {
    32         memset(g,false,sizeof(g));
    33         for(int i = 0; i < m; ++i) {
    34             int u,v;
    35             scanf("%d %d",&u,&v);
    36             g[u][v] = true;
    37         }
    38         Floyd();
    39         int ans = 0,x,y;
    40         for(int i = 1; i <= n; ++i){
    41             x = y = 0;
    42             for(int j = 1; j <= n; ++j){
    43                 if(g[i][j]) x++;
    44                 if(g[j][i]) y++;
    45             }
    46             if(x+y == n-1) ans++;
    47         }
    48         printf("%d
    ",ans);
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/4047137.html
Copyright © 2011-2022 走看看