POJ 3660 Cow Contest

4674 ワード

テーマはとても面白くて、n頭の牛が試合を行って、彼らの間の試合の結果は伝達することができて、例えばaはbに勝って、bはcに勝って、
では、aを出してcに勝って、どれだけの牛の順位が確定するかを聞くこともできます.順位確定はそれが勝ったx頭牛+それに勝った
のy頭牛=n-1で、このような場合+1でよい.今日の前菜...
/*Accepted    228K    32MS    C++    1056B    2012-09-03 09:46:55*/

#include<stdio.h>

#include<string.h>

#include<stdlib.h>



const int MAXN = 1 << 7;

int res[MAXN][MAXN];

int n, m;

void ReadGraph()

{

    int a, b;

    memset(res, 0, sizeof res);

    while(m --)

    {

        scanf("%d%d", &a, &b);

        res[a][b] = 1;

    }

}



void floyd()

{

    int i, j, k;

    for(k = 1; k <= n; k ++)

    {

        for(i = 1; i <= n; i ++)

        {

            for(j = 1; j <= n; j ++)

            {

                if(res[i][k] && res[k][j])

                    res[i][j] = 1;

            }

        }

    }

}



int cal()

{

    int cnt, ans = 0, i, j;

    for(i = 1; i <= n; i ++)

    {

        cnt = 0;

        for(j = 1; j <= n; j ++)

        {

            if(i == j) continue;

            if(res[i][j] || res[j][i])

                cnt ++;

        }

        if(cnt == n - 1)

            ans ++;

    }

    return ans;

}



int main()

{

    while(scanf("%d%d", &n, &m) == 2)

    {

        ReadGraph();

        floyd();

        printf("%d
", cal()); } return 0; }