17th 【最短路 floyd】股票经济人通信网络
来源:互联网 发布:ubuntu touch命令 编辑:程序博客网 时间:2024/04/30 16:52
【题目描述】:
有N个股票经济人可以互相传递消息,他们之间存在一些单向的通信路径。现在有一个消息要由某个人开始传递给其他所有人,问应该由哪一个人来传递,才能在最短时间内让所有人都接收到消息。若不存在这样一个人,则输出disjoint。
【输入描述】:
第一行为n,代表总人数,当n=0时结束程序。
接着n行,第i+1行的第一个是一个整数t,表示第i个人可以传递消息给t个人,接着有t对整数,每对的第一个数是j,表示i可以传递消息给j,第二个数是从i直接传递消息到j所用的时间。
【输出描述】:
两个整数,第一个为选点的散布消息的起点,第二个整数时所有人得知消息的最短时间
【样例输入】:
32 2 4 3 52 1 2 3 62 1 2 2 253 4 4 2 8 5 31 5 84 1 6 4 10 2 7 5 202 2 5 1 50
【样例输出】:
3 23 10
【时间限制、数据范围及描述】:
时间:1s 空间:128M
N<=300
一开始看都不看就写了个最小生成树。。。
后来意识到几个人可以同时打电话。。。
弗洛伊德大法好
用floyd算完后,以任意一个点为开始点,到其他所有点的时间中的最大值就是以该点为起点的最终时间了。如果有到不了的,这个点就gg了。
然后比较所有点的时间就行了。
#include <iostream> #include <cstdio> #include <algorithm> #include <queue> using namespace std; const int MAX=0xfffffff; int n; int edge[305][305]; int min(int a,int b){ return a<b?a:b;}void floyd() { for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for (int j=1;j<=n;j++) edge[i][j]=min(edge[i][k]+edge[k][j],edge[i][j]); } //edge[i][j]表示从i到j的时间 int main() { int m,x,d; // freopen("economic.in","r",stdin); //freopen("economic.out","w",stdout); while (scanf("%d", &n)) { if(n==0) break; for(int i=1;i<=n;i++) for (int j=1;j<=n;j++) { if (i!=j) edge[i][j]=MAX; else edge[i][j]=0; } //数组初值 for (int i=1;i<=n;i++) { scanf("%d",&m); for (int j=1;j<=m;j++) { scanf("%d%d",&x,&d); edge[i][x]=d; //单向的边 } } floyd(); int ans, tmin, man,mark; ans=MAX; for (int i=1;i<=n;i++) { tmin=-1; mark=0; for (int j=1;j<=n;j++) { if (i!=j&&edge[i][j]==MAX){mark=1;break;} //这个点无法到达某个点 if (i!=j&&edge[i][j]>tmin) tmin=edge[i][j]; //求最终时间,就是到所有点中的最大值 } if (mark!=1&&tmin<ans) { ans=tmin; man=i; } //更新最小时间 } if (ans==MAX) printf("disjoint\n"); else printf("%d %d\n",man,ans); } return 0; }
阅读全文
0 0
- 17th 【最短路 floyd】股票经济人通信网络
- 股票经济人通信网络 poj 1125 多源最短路
- POJ1125 股票经济人通信网络(多源最短路径)
- 18th 【最短路 floyd】智捅马蜂窝
- 19th 【最短路 floyd】租用游艇
- 【NOI2007T1】社交网络-Floyd求最短路
- poj1125 最短路floyd
- poj1603 Floyd最短路
- poj1125(floyd最短路)
- 最短路-Floyd算法
- 最短路-floyd
- poj_2253 最短路floyd
- 最短路算法(Floyd)
- uva567(最短路 + floyd)
- UVA10803(最短路floyd )
- 最短路-Floyd算法
- HDU1690(Floyd最短路)
- hihocoder1089(Floyd最短路)
- 姿态解算系列一:经验型卡尔曼数据融合
- Servlet开发三种方式
- nio 阻塞式文件传输服务端
- 忐忑
- 习惯七 不断更新---平衡的自我提升原则
- 17th 【最短路 floyd】股票经济人通信网络
- 剑指offer面试42翻转单词顺序和面试5从尾到头打印链表
- Eclipse简介
- 梯度下降和牛顿法的数学解释
- LSD激光雷达简单介绍
- 关于Uploadify 不显示效果原因
- 设置session的过期时间
- nio 本地文件操作之通道之间的数据传输
- LINUX exec函数的使用