您的位置:首页 > 其它

POJ-3660-Cow Contest [最短路][Floyd]

2017-08-22 08:45 357 查看
题目传送门

题意:给出许多牛之间的强弱关系,问可以确定多少牛的名次。

思路:用Floyd,如果一头牛与其他N-1头牛的关系确定,即这头牛的名次就固定。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue>
#include <map>
#include <set>

using namespace std;

int mp[120][120];
int N,M;
int main(void)
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);

while(~scanf("%d %d", &N, &M))
{
memset(mp,0,sizeof(mp));
while (M--)
{
int x, y;
scanf("%d %d", &x, &y);
mp[x][y]=1;
}
for (int k = 1; k <= N; k++)
{
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
if (mp[i][k]==1 && mp[k][j]==1)
{
mp[i][j] = 1;
}
}
}
}
int ans = 0;
for (int i = 1; i <= N; i++)
{
int cnt = 0;
for (int j = 1; j <= N; j++)
{
if (mp[i][j]==1 || mp[j][i]==1)
cnt++;
}
ans = ans + (cnt==N-1?1:0);
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: