POJ 3660 Cow Contest
4674 ワード
テーマはとても面白くて、n頭の牛が試合を行って、彼らの間の試合の結果は伝達することができて、例えばaはbに勝って、bはcに勝って、
では、aを出してcに勝って、どれだけの牛の順位が確定するかを聞くこともできます.順位確定はそれが勝ったx頭牛+それに勝った
のy頭牛=n-1で、このような場合+1でよい.今日の前菜...
では、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;
}