POJ1125 股市谣言传播 图论(Floyd最短路)

来源:互联网 发布:centos 7 解压缩tar 编辑:程序博客网 时间:2024/06/04 01:05


题目概述:

这道题的大意是说,在股市中特定的人之间都有各自的联系,且对于每一条关系,从一个人传递谣言到另一个人的时间是不同的。然后我们的目标是要散布一条谣言,判断出应该从谁开始传播,才可以让这条谣言传播完整个人际关系网络,并且算出传递到最后一个人的时间是多少。

另外说一句,这道题的数据非常弱的,估计没有多少个超过20的点的图。而且看别人的博客也没有输入非连通的情况。

算法思想:

因为这明显是一个图求最短路径的题,并且要试一下每一个点为源点的情况,所以我就决定用Floyd来算。

首先把每一个人当作图中的一个顶点,每一个关系当作一条边,这段关系的消息传递时间当作这条边的权重,初始化时候把自己到自己的距离初始为0,其他的都为INF。

然后用佛洛依德算法计算出各点距离。

然后依次枚举每一个点,看从这点到整个网络点的距离的最大值,记下这时候的起点值。

再从这些最大值中取得一个最小的,输出其起点值和这个最小值。

完毕。

代码部分:

#include <iostream>#include <list>#include <map>#include <string.h>#include <string>#include <algorithm>using namespace std;map<string, int> mymap;const int INF = 10000000;int n, m, a, b;double d[117][117];void floyd() {for (int k = 1; k <= n; k++) {for (int j = 1; j <= n; j++) {for (int i = 1; i <= n; i++) {if (d[i][j] > d[i][k] + d[k][j]) d[i][j] = d[i][k] + d[k][j];}}}}int main(){while (cin >> n && n) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (i != j) d[i][j] = INF;else d[i][j] = 0;}}for (int i = 1; i <= n; i++) {cin >> m;for (int j = 1; j <= m; j++) {cin >> a >> b;d[i][a] = b;}}floyd();int p = INF, q = 0;int y = 0;for (int i = 1; i <= n; i++) {int res = 0;for (int j = 1; j <= n; j++) {if (res <= d[i][j]) {res = d[i][j];q = j;}}if (p >= res) {p = res;y = i;}}if (p!=INF) cout << y <<" "<< p << endl;else cout << "disjoint" << endl;}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米5s手机听筒声音小怎么办 淘宝上买手机买到翻新怎么办 小米6用久了很卡怎么办 淘宝商家发错误的退货地址怎么办 买苹果手机时查到了翻新机该怎么办 荣耀9青春版玩王者卡怎么办 红米4x手机声音突然成破音怎么办 红米pro玩王者荣耀卡怎么办 红米手机恢复出厂设置出错了怎么办 红米恢复出厂设置出错了怎么办 应聘工作上当收押金了该怎么办 红米1s密码忘了怎么办 红米1s刷机后开不了机怎么办 红米2a耗电超快怎么办 红米2a手机耗电快怎么办 红米4x触屏失灵怎么办 苹果恢复出厂设置后密码忘记怎么办 红米1s忘记密码锁屏了怎么办 红米3手机忘记解锁图案怎么办 小米5x手机录屏失败怎么办 红米4x手机wif信号不好怎么办 红米4x屏幕换了截屏不好使怎么办 红米手机2a卡慢怎么办? 红米手机连接无线网信号不好怎么办 小米4用久了很卡怎么办 红米4a关不了机怎么办 红米手机屏幕锁了忘记密码怎么办 手机锁了忘记密码怎么办 红米 红米4a开不开机怎么办 红米显示小人开不了机怎么办 红米手机找回微信密码怎么办 红米手机密码忘了怎么办数字锁 红米1s忘了密码怎么办 红米手机下面三个键失灵怎么办 红米note手机没声音了怎么办 魅蓝3s被锁了怎么办 小米5x的4g网速慢怎么办 红米一体机与后盖有裂缝怎么办? 红米4x喇叭坏了怎么办 红米4x电池坏了怎么办 小米电视4a开不了机怎么办