MPI Maelstrom POJ - 1502

实验室有很多台计算机,由于每个人计算机的性能不同,导致计算机之间发送信息的速度不同,所以花费时间不同。

消息从第一台电脑发送到第二台电脑后,这两台电脑能再向其他电脑发送消息,就是一种类似二叉树的结构。

当然并不是真正的二叉树——我们的计算机有一些特殊的特性,我们应该加以利用。

我们的计算机允许同时向连接到它的任意数量的其他计算机发送消息。

然而,消息不一定同时到达目的地——这涉及到计算机配置。

一般来说,我们需要考虑到拓扑结构中每个计算机的时间成本,并相应地计划将消息传播所需的总时间降到最低。

涂爷需要经常给其他人发消息,她想要知道如果她发出一个消息,至少要等多久全部的人才可以都收到通知。

Input

第一行输入一个n,表示有多少台计算机(涂爷当然是一号机啦~)。

随后n-1行,以邻接矩阵的形式给出计算机(1~n)之间通讯需要的时间。

由于两台计算机相互通信时间相等,且计算机自己和自己不需要通信,所以只给出了矩阵的下三角。

ps:x表示由于部分计算机之间存在特殊的磁场并不能通信。

ps2:该题所有数据范围0~100。

Output

输出一行表示涂爷需要等待的时间。.

Examples

Sample Input

5
50
30 5
100 20 50
10 x x 10
Sample Output
35

数据只有100,所以便利使用Floyd也是可以的

Floyd

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
using namespace std; const int maxn = 110;
const int inf = 0x3f3f3f3f;
int e[maxn][maxn];
int n; void floyd() {
for (int k = 1; k <= n; ++k)
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
if (e[i][j] > e[i][k] + e[k][j])
e[i][j] = e[i][k] + e[k][j];
} int main() {
//freopen("in.txt","r",stdin);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n; char c[20];
for (int i = 1; i <= n; ++i)for (int j = 1; j <= n; ++j)e[i][j] = inf;
for (int i = 1; i <= n; ++i)e[i][i] = 0;
for(int i = 2;i<=n;++i)
for (int j = 1; j <= i - 1; ++j) {
cin >> c;
if (c[0] == 'x')continue;
e[i][j] = e[j][i] = atoi(c);
}
floyd();
int ans = 0;
for (int i = 2; i <= n; i++) {
if (e[1][i] != inf)
ans = max(ans, e[1][i]);
}
cout << ans << endl;
}

堆优化的Dijkstra

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int maxn = 110;
int w[maxn][maxn];
int dis[maxn];
bool book[maxn];
int n; void Dijkstra() {
priority_queue<PII, vector<PII>, greater<PII> > q;
memset(book, false, sizeof book);
for (int i = 2; i <= n; ++i)dis[i] = inf;
dis[1] = 0; book[0] = true;
q.push({ 0,1 });
while (q.size()) {
PII cur = q.top(); q.pop();
int u = cur.second;
if (book[u])continue;
book[u] = true;
for (int v = 1; v <= n; ++v) {
if (dis[u] + w[u][v] < dis[v]) {
dis[v] = dis[u] + w[u][v];
q.push({ dis[v], v });
}
}
}
} int Stoi(string s) {
int ret = 0;
for (int i = s.length() - 1, j = 1; i >= 0; --i, j *= 10)
ret += (s[i] - '0') * j;
return ret;
} int main() {
string input;
fill(w[0], w[0] + maxn * maxn, inf);
cin >> n;
for (int i = 2; i <= n; ++i)
for (int j = 1; j < i; ++j) {
cin >> input;
if (input != "x") w[i][j] = w[j][i] = Stoi(input);
}
Dijkstra();
int ans = 0;
for (int i = 2; i <= n; ++i)
ans = max(ans, dis[i]);
cout << ans << endl;
return 0;
}

MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】的更多相关文章

  1. kuangbin专题专题四 MPI Maelstrom POJ - 1502

    题目链接:https://vjudge.net/problem/POJ-1502 dijkstra板子题,题目提供下三角情况,不包含正对角线,因为有题意都为0,处理好输入,就是一个很水的题. #inc ...

  2. MPI Maelstrom POJ - 1502 floyd

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> usin ...

  3. POJ 1502 MPI Maelstrom [最短路 Dijkstra]

    传送门 MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5711   Accepted: 3552 ...

  4. POJ 1502 MPI Maelstrom( Spfa, Floyd, Dijkstra)

    题目大意: 给你 1到n ,  n个计算机进行数据传输, 问从1为起点传输到所有点的最短时间是多少, 其实就是算 1 到所有点的时间中最长的那个点. 然后是数据 给你一个n 代表有n个点, 然后给你一 ...

  5. POJ 2387 Til the Cows Come Home(dijkstra裸题)

    题目链接:http://poj.org/problem?id=2387 题目大意:给你t条边(无向图),n个顶点,让你求点1到点n的最短距离. 解题思路:裸的dijsktra,注意判重边. 代码: # ...

  6. hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题

    hdu 2544  求点1到点n的最短路  无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...

  7. POJ 1330 LCA裸题~

    POJ 1330 Description A rooted tree is a well-known data structure in computer science and engineerin ...

  8. POJ 3264 RMQ裸题

    POJ 3264 题意:n个数,问a[i]与a[j]间最大值与最小值之差. 总结:看了博客,记下了模板,但有些地方还是不太理解. #include<iostream> #include&l ...

  9. POJ 1502:MPI Maelstrom Dijkstra模板题

    MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6499   Accepted: 4036 Des ...

  10. POJ 1502 MPI Maelstrom / UVA 432 MPI Maelstrom / SCU 1068 MPI Maelstrom / UVALive 5398 MPI Maelstrom /ZOJ 1291 MPI Maelstrom (最短路径)

    POJ 1502 MPI Maelstrom / UVA 432 MPI Maelstrom / SCU 1068 MPI Maelstrom / UVALive 5398 MPI Maelstrom ...

随机推荐

  1. 【开源】int,long long去一边去:高精度大合集!

    加法 \(add\) string add(string s1, string s2) { //时间复杂度 O(log n) string res = ""; int c = 0, ...

  2. 思科4331 语音网关配置, cisco 4331 router 配置文件

    GW01#cisco_ROUTER01#cisco_ROUTER01#sh clocisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01 ...

  3. 安卓端出现https请求失败的一次问题排查

    背景 某天早上,正在一个会议时,突然好几个同事被叫出去了:后面才知道,是有业务同事反馈到领导那里,我们app里面某个功能异常. 具体是这样,我们安卓版本的app是禁止截屏的(应该是app里做了拦截), ...

  4. 通信技术 Communication

    缩写 全称 翻译 备注 I2C Inter-Integrated Circuit 集成电路总线 通信协议 SPI Serial Peripheral Interface 串行外设接口 通信协议 QSP ...

  5. JQuery_2

    1.动画:    1.三种方式显示和隐藏元素       1.默认方式       1.show([speed,[easing],[fn]])         1.参数:             1. ...

  6. 51Nod - 1086 多重背包

    有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi ...

  7. MinIO客户端之mb

    MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc mb MinIO对象锁定 桶版本控制 桶复制 站点复制概述 创建桶bkt1,命令如下: ./mc mb lo ...

  8. 集群化部署ZabbixServer

    修改Zabbix-agent配置 1.修改配置文件 三台zabbix-Server上操作 vim /etc/zabbix/zabbix_agent2.conf Server=127.0.0.1 改成 ...

  9. 高性能利器!华为云MRS ClickHouse重磅推出!

    摘要:华为智能数据湖MRS服务即将上线ClickHouse高性能引擎集群,用户只需要几分钟,就可以轻松方便地一键式完成集群部署搭建,快速拥有PB级数据的秒级交互查询分析能力,帮助用户带来极致的性能体验 ...

  10. 适合新手的12个Mybatis-Plus常用注解

    摘要:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 本文分享自华为云社区<那些年,我们一起学过 ...