POJ 1125 Stockbroker Grapevine //Floyd算法
2015-07-15 21:00
363 查看
题目描述
POJ1125 Stockbroker Grapevine解题思路
找出一个人,使谣言从其传出到所有人用时最短.(1):用Floyd先算出某人到每个人的最短时间,再对时间取最大 (保证每个人都能收到谣言…) = =|
(2):对每个人执行(1),取时间最小,即为所求.
参考代码
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #define inf 0x3f3f3f3f #define MAX_V 110 using namespace std; int f[MAX_V][MAX_V],a[MAX_V]; int main() { int n,num,u,cost; while(~scanf("%d",&n),n){ memset(f,inf,sizeof(f)); memset(a,0,sizeof(a)); int num; for(int i = 1;i <= n;i++){ scanf("%d",&num); while(num--){ scanf("%d %d",&u,&cost); f[i][u]=cost; } } for(int k = 1;k <= n;k++) for(int i = 1;i <= n;i++) for(int j = 1;j <= n;j++) if(i!=k && i!=j && j!=k) f[i][j] = min(f[i][j],f[i][k]+f[k][j]); int ans = inf,t; for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++) if(i != j && (f[i][j]>a[i])) a[i] = f[i][j]; if(a[i] < ans){ ans = a[i]; t = i; } } if(ans == inf)printf("disjoint\n"); else printf("%d %d\n",t,ans); } return 0; }
相关文章推荐
- Memcached基础
- bzoj2588
- Android 判断EditView是否为密码框
- C之运算符与强制类型转换
- oracle中怎么比较两个日期的大小
- 使用C++11的可变参数模板改造单例模式
- 哈工大操作系统实验4—进程同步
- 太晚睡觉等于自杀http://blog.csdn.net/augusdi/article/details/5440987
- JSP与HTML的区别
- struts.xml配置文件标签详解
- Javascript浏览器对象模型BoM要点总结
- (剑指Offer)面试题20:顺时针打印矩阵
- 基於Java的元胞自动机Cellular Automaton
- Linux下Mongodb数据库主从同步配置
- Linux下Mongodb数据库主从同步配置
- Neu C详解
- C中的可变参数研究
- Android代码修改出现error opening trace file: No such file or directory (2)解决办法之一
- Linux Ubuntu下安装配置mysql
- 自顶向下的伸展树