poj 3660 Floyd应用(确定牛的位置)
来源:互联网 发布:淘宝里的旺旺号是什么 编辑:程序博客网 时间:2024/04/30 13:41
题意:N个选手,如果A比B强,B比C强,则A必比C强。告知若干个强弱关系,问有多少人的排名可以确定。
思路:如果一个点u, 有x个点能到达此点,从u点出发,能到达y个点,若x+y=N-1,则u点的排名是确定的。用floyd算出每两个点之间的距离,最后统计,若dist[a][b]无穷大且dist[b][a]无穷大, 则a和b的排名都不能确定。
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <cstdlib>using namespace std;#define INF 0x3fffffff#define N 105int g[N][N];int n,m;int main(){ int i,j,k,a,b,res=0; scanf("%d %d",&n,&m); for(i = 1;i<=n;i++) for(j = 1;j<=n;j++) if(i!=j) g[i][j] = INF; for(i = 1;i<=m;i++){ scanf("%d %d",&a,&b); g[a][b] = 1; } for(i = 1;i<=n;i++) for(j = 1;j<=n;j++) for(k = 1;k<=n;k++) g[j][k] = min(g[j][k],g[j][i]+g[i][k]); for(i = 1;i<=n;i++){ for(j = 1;j<=n;j++) if(j!=i && g[i][j]==INF && g[j][i]==INF) break; if(j==n+1) res++; } printf("%d\n",res); return 0;}
0 0
- poj 3660 Floyd应用(确定牛的位置)
- poj 3660 Cow Contest(Floyd的拓展应用)
- (POJ 3660)Cow Contest [详解] [floyd] 传递闭包 确定top序列顺序
- POJ 3660(floyd)
- POJ 3660 牛的排名 (Floyd 传递闭包)
- android应用安装位置确定
- POJ 1847 Floyd应用
- POJ 3615 牛的最小最大起跳高度问题 Floyd算法的变形应用
- poj 1125 floyd简单应用
- poj 2570 floyd算法+二进制的应用
- POJ 2253 Frogger (Floyd的变形)
- Android——确定自己的位置(获得经纬度)
- (DS1.5.10)POJ 1019 Number Sequence(确定一个数字序列中某一个位置上的数字)
- poj 3660 名次确定
- poj 3660 Cow Contest (Floyd+思维)
- POJ - 3660 Cow Contest (floyd变形)
- Poj 3660 Cow Contest(Floyd)
- POJ 3660 Cow Contest(Floyd算法)
- 55. Jump Game
- Volley学习笔记(二):使用Volley加载网络图片
- 七月日记
- Android核心基础-7.Android 网络通信-1.获取文本数据
- 在windows系统下修改hosts文件,使其可以修改
- poj 3660 Floyd应用(确定牛的位置)
- 七月二十八日 Linux操作系统c语言学习笔记
- MySQL_ROW
- 控件——ImageView
- session,cookie的区别,安全性
- 最大子数组问题
- Windows文件操作的API函数[转载]
- spring多数据源配置
- Different Ways to Add Parentheses