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 /ZOJ 1291 MPI Maelstrom (最短路径)
Description
BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distributed shared memory machine with a hierarchical communication subsystem. Valentine McKee's research advisor, Jack Swigert, has asked her to benchmark the new system.
``Since the Apollo is a distributed shared memory machine, memory access and communication times are not uniform,'' Valentine told Swigert. ``Communication is fast between processors that share the same memory subsystem, but it is slower between processors that are not on the same subsystem. Communication between the Apollo and machines in our lab is slower yet.''
``How is Apollo's port of the Message Passing Interface (MPI) working out?'' Swigert asked.
``Not so well,'' Valentine replied. ``To do a broadcast of a message from one processor to all the other n-1 processors, they just do a sequence of n-1 sends. That really serializes things and kills the performance.''
``Is there anything you can do to fix that?''
``Yes,'' smiled Valentine. ``There is. Once the first processor has sent the message to another, those two can then send messages to two other hosts at the same time. Then there will be four hosts that can send, and so on.''
``Ah, so you can do the broadcast as a binary tree!''
``Not really a binary tree -- there are some particular features of our network that we should exploit. The interface cards we have allow each processor to simultaneously send messages to any number of the other processors connected to it. However, the messages don't necessarily arrive at the destinations at the same time -- there is a communication cost involved. In general, we need to take into account the communication costs for each link in our network topologies and plan accordingly to minimize the total time required to do a broadcast.''
Input
The input will describe the topology of a network connecting n processors. The first line of the input will be n, the number of processors, such that 1 <= n <= 100.
The rest of the input defines an adjacency matrix, A. The adjacency matrix is square and of size n x n. Each of its entries will be either an integer or the character x. The value of A(i,j) indicates the expense of sending a message directly from node i to node j. A value of x for A(i,j) indicates that a message cannot be sent directly from node i to node j.
Note that for a node to send a message to itself does not require network communication, so A(i,i) = 0 for 1 <= i <= n. Also, you may assume that the network is undirected (messages can go in either direction with equal overhead), so that A(i,j) = A(j,i). Thus only the entries on the (strictly) lower triangular portion of A will be supplied.
The input to your program will be the lower triangular section of A. That is, the second line of input will contain one entry, A(2,1). The next line will contain two entries, A(3,1) and A(3,2), and so on.
Output
Your program should output the minimum communication time required to broadcast a message from the first processor to all the other processors.
Sample Input
5
50
30 5
100 20 50
10 x x 10
Sample Output
35
Http
POJ:https://vjudge.net/problem/POJ-1502
UVA:https://vjudge.net/problem/UVA-423
SCU:https://vjudge.net/problem/SCU-1068
UVALive:https://vjudge.net/problem/UVALive-5398
ZOJ:https://vjudge.net/problem/ZOJ-1291
Source
图论,最短路径
题目大意
在一个无向图中有n个点,现在从1号点开始传递信息,每传递到一个点,这个点也可以开始传递信息。一个点可以同时向多个方向传递。问使所有点收到信息的最短时间
解决思路
一开始看到这道题以为是最小生成树,但如果手动模拟一下,发现就是Dijkstra算法的过程,即:
寻找当前已经确定的点的集合相连的点中路径最小的,加入已确定集合,并用其修改其他点的最短路径。
这就是求最短路径的算法
关键要理解题意。
注意:ZOJ有多组数据
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxN=100;
const int inf=147483647;
int n;
int M[maxN][maxN];
int Dist[maxN];
bool solve[maxN];
int read();
int main()
{
	int T;
	//cin>>T;//ZOJ有多组数据
	//for (int ti=1;ti<=T;ti++)
	//{
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		M[i][i]=0;
		for (int j=1;j<i;j++)
		{
			M[i][j]=M[j][i]=read();
		}
	}
	for (int i=1;i<=n;i++)
	    Dist[i]=M[1][i];
	memset(solve,0,sizeof(solve));
	for (int i=1;i<n;i++)
	{
		int id,mi=inf;
		for (int j=1;j<=n;j++)
		    if ((solve[j]==0)&&(Dist[j]<mi))
		    {
		    	mi=Dist[j];
		    	id=j;
			}
		solve[id]=1;
		for (int j=1;j<=n;j++)
		    if ((solve[j]==0)&&(Dist[id]+M[id][j]<Dist[j]))
		    {
		    	Dist[j]=Dist[id]+M[id][j];
			}
	}
	int Ans=0;
	for (int i=1;i<=n;i++)
	    Ans=max(Ans,Dist[i]);
	cout<<Ans<<endl;
	//if (ti!=T)
	//    cout<<endl;//ZOJ还要调格式
//}
	return 0;
}
int read()
{
	int x=0;
	int k=1;
	char ch=getchar();
	while (((ch>'9')||(ch<'0'))&&(ch!='-')&&(ch!='x'))
	    ch=getchar();
	if (ch=='x')//快速读入修改一下,如果是x就返回无穷大
	    return inf;
	if (ch=='-')
	{
		k=-1;
		ch=getchar();
	}
	while ((ch>='0')&&(ch<='9'))
	{
		x=x*10+ch-48;
		ch=getchar();
	}
	return x*k;
}
												
											POJ 1502 MPI Maelstrom / UVA 432 MPI Maelstrom / SCU 1068 MPI Maelstrom / UVALive 5398 MPI Maelstrom /ZOJ 1291 MPI Maelstrom (最短路径)的更多相关文章
- POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)
		
POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...
 - POJ 2251 Dungeon Master /UVA 532 Dungeon Master / ZOJ 1940 Dungeon Master(广度优先搜索)
		
POJ 2251 Dungeon Master /UVA 532 Dungeon Master / ZOJ 1940 Dungeon Master(广度优先搜索) Description You ar ...
 - POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Network / FZU 1161 (网络流,最大流)
		
POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Networ ...
 - POJ 1502 MPI Maelstrom(最短路)
		
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4017 Accepted: 2412 Des ...
 - POJ 1502 MPI Maelstrom
		
MPI Maelstrom Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total ...
 - POJ 1502 MPI Maelstrom (最短路)
		
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6044 Accepted: 3761 Des ...
 - POJ - 1502 MPI Maelstrom 路径传输Dij+sscanf(字符串转数字)
		
MPI Maelstrom BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odys ...
 - POJ 1502 MPI Maelstrom [最短路 Dijkstra]
		
传送门 MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5711 Accepted: 3552 ...
 - POJ 1502:MPI Maelstrom Dijkstra模板题
		
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6499 Accepted: 4036 Des ...
 
随机推荐
- jQuery.bsgrid
			
http://thebestofyouth.com/bsgrid/ 支持json.xml数据格式,皮肤丰富并且容易定制,支持表格编辑.本地数据.导出参数构建等实用便捷的功能,容易扩展,更拥有丰富的示例 ...
 - POJ1159
			
这竟然是IOI虽然是2000年的,但其实也改变不了它水题的本质 我写了两种方法,这里都讲一下吧 考虑记忆化搜索,用f[i][j]表示当区间的左端为i,右端为j时最少要添加多少字符,所以ans就为f[1 ...
 - python 井字棋(Tic Tac Toe)
			
说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码也是本人逐字逐句敲的. minimax算法还没完全理解,所以参考了这里的代码,并作了修改. 特点 可以选 ...
 - vue.js 2.0实现的简单分页
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
 - Hadoop日记Day13---使用hadoop自定义类型处理手机上网日志
			
测试数据的下载地址为:http://pan.baidu.com/s/1gdgSn6r 一.文件分析 首先可以用文本编辑器打开一个HTTP_20130313143750.dat的二进制文件,这个文件的内 ...
 - winform 保存文件 打开文件 选择文件 字体样式颜色(流 using System.IO;)
			
string filePath = ""; private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) ...
 - 个人新站 【EXP技术分享博客】 落成~ 全新的技术资源~ 欢迎莅临~
			
对的,我筹备了大半年的个站技术网站正式开张了~ EXP技术分享博客: http://exp-blog.com CSDN上面大部分文章已经迁移过去了,以后也会更多地在新站点更新~ 为了庆祝新站开张,近期 ...
 - PHP Laravel Install and Quickstart
			
1.安装Laravel 一键安装包Laravel 要安装Laravel依赖的PHP7以上版本,以及php 扩展php-openssl php-pdo ... 以及Homestead github下载安 ...
 - git初次推送
			
第一次配置Git git config --global user.name "xxxx" git config --global user.email "xxxx@xx ...
 - c# dataGridView cell添加下拉框
			
应用场景: dataGridView需要某一个cell变成下拉框样式. 思路详解: dataGridVie添加固定格式的row. 代码: DataGridViewRow row = new DataG ...