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

    dp,图论

    题意:输入n和m表示n个牛(从1到n标号),下面m个信息,A B,表示A牛能打赢B牛。现在要给所有的牛排名(按实力从高到低),问哪些牛的排名是可以确定的

    如果知道由l个人能打赢自己,自己能打赢w个人,且l+w+1 = n的话,那么自己的排名就是可以确定的,所有转化为要求出,每个人,能打赢多少人,能被多少人打赢

    建图: dp[i][j]=1表示i能打赢j,=0表示不确定他们之间的关系,然后类似floyd那样dp,

    若dp[i][k]=1且dp[k][j]=1,则dp[i][j]=1

    dp结束后扫描一次整个dp数组即可

    被归为中等题,这不是水题么。。。。

    #include <cstdio>
    #include <cstring>
    #define N 110
    
    int dp[N][N];
    int n,m;
    
    int main()
    {
       while(scanf("%d%d",&n,&m)!=EOF)
       {
          memset(dp,0,sizeof(dp));
          for(int i=0; i<m; i++)
          {
             int u,v;
             scanf("%d%d",&u,&v);
             dp[u][v] = 1;
          }
    
          for(int k=1; k<=n; k++)
             for(int i=1; i<=n; i++)
                for(int j=1; j<=n; j++)
                   if(dp[i][k] && dp[k][j])
                      dp[i][j] = 1;
          int res = 0;
          for(int i=1; i<=n; i++)
          {
             int lose = 0 , win = 0;
             for(int k=1; k<=n; k++)
             {
                if(dp[k][i])
                   lose++;
                if(dp[i][k])
                   win++;
             }
             if(lose + win + 1 == n) res++;
          }
          printf("%d\n",res);
       }
       return 0;
    }
  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/scau20110726/p/3058554.html
Copyright © 2011-2022 走看看