博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1502-MPI Maelstrom
阅读量:6074 次
发布时间:2019-06-20

本文共 1327 字,大约阅读时间需要 4 分钟。

链接:https://vjudge.net/problem/POJ-1502

题意:

n个点,从1号向开始选择任意个结点发送信息,下一个结点接收到信息后可再向任意个结点发送。

同时发送信息有时间代价。代价有邻接矩阵给出。只给出坐下全部,x为不连通。

同时为无向的。即a->b == b->a。

求每个结点都接受到信息的最小时间代价。

思路:

Dijkstra,求Dis数组中的最大值

代码:

#include 
#include
#include
#include
#include
using namespace std;const int MAXN = 100+10;int Map[MAXN][MAXN];int Dis[MAXN];int Vis[MAXN];int main(){ int n; scanf("%d",&n); for (int i = 1;i<=n;i++) for (int j = 1;j<=n;j++) if (i == j) Map[i][j] = 0; else Map[i][j] = 999999; for (int i = 2;i<=n;i++) for (int j = 1;j
> x; if (x[0] != 'x') { istringstream iss(x); int num; iss >> num; Map[i][j] = Map[j][i] = num; } } for (int i = 1;i<=n;i++) Dis[i] = Map[1][i]; Vis[1] = 1; for (int i = 1;i<=n;i++) { int w = -1,small = 999999; for (int j = 1;j<=n;j++) if (Vis[j] == 0&&Dis[j] < small) { w = j; small = Dis[j]; } Vis[w] = 1; for (int j = 1;j<=n;j++) { if (Vis[j] == 0) { Dis[j] = min(Dis[j],Dis[w]+Map[w][j]); //cout << Dis[j] << ' ' << Dis[w] + Map[w][j] << endl; } } } int sum = 0; for (int i = 2;i<=n;i++) sum = max(sum,Dis[i]); cout << sum << endl; return 0;}/*410x 10x x 10 */

  

转载于:https://www.cnblogs.com/YDDDD/p/10274877.html

你可能感兴趣的文章
Ubuntu的JSP服务器安装
查看>>
Centos 6.4 下设置静态IP,指定NAMESERVER(DNS),修改网卡MAC地址
查看>>
阿里工程师开发了一款免费工具,提升Kubernetes应用开发效率
查看>>
cisco防火墙ASA5505配置
查看>>
MySQL 表栏位类型选择
查看>>
官网下载Google Chrome离线安装包
查看>>
Linux 系统常用的性能监测命令工具
查看>>
lvresize 指令
查看>>
Xamarin如何生成Android项目的APK
查看>>
Fabric实战
查看>>
PAT 1003. Emergency
查看>>
三星i9300 unroot || root恢复
查看>>
jsp基础知识
查看>>
离线安装db2的python模块ibm_db
查看>>
环境变量
查看>>
Swift 项目中可能用到的第三方框架
查看>>
我的友情链接
查看>>
普通exe和sys驱动文件结构上有什么不同?
查看>>
Shell脚本查看apk签名信息
查看>>
raid数据恢复,Raid5磁盘阵列数据恢复案例,服务器数据恢复
查看>>