程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj-3660 Cow Contest

poj-3660 Cow Contest

編輯:C++入門知識

poj-3660 Cow Contest


題目鏈接:www.Bkjia.com

利用floyd進行閉包的傳遞確定勝負關系。這樣所有點a能走到的點都是排名在a以後的。所有能走到點a的點都是排名在a以前的。如a點,排名在它之前的和排名在它之後的點之和為n-1,那麼它的排名就是確定的。

 

 

#include 
#include 
#include 
#include 
#include 

using namespace std;

const int MAX = 110;

int n,m;
int rank[MAX][MAX];
int in[MAX] ,out[MAX];
int ans;

int main ()
{
    int a,b;
    while (cin>>n>>m)
    {
        memset(rank,0,sizeof(rank));
        memset(in,0,sizeof(in));
        memset(out,0,sizeof(out));
        ans = 0;
        while (m--)
        {
            cin>>a>>b;
            rank[a][b] = 1;
        }
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
        {
            if (rank[i][k] == 1 && rank[k][j] == 1)
                rank[i][j] =1;
        }
        for(int i=1;i<=n;i++)
        {
            int res = 0;
            for(int j=1;j<=n;j++)
                res += rank[i][j] + rank[j][i];
            if (res == n-1)
                ans++;
        }
        cout<

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved