poj1502 MPI Maelstrom 最短路径,dijkstra
来源:互联网 发布:淘宝卖家免费工具 编辑:程序博客网 时间:2024/04/30 10:19
题目链接:http://poj.org/problem?id=1502
题目大意:N个处理器要进行信息传递,处理器i传递信息给自己不需要时间,处理器i与处理器j之间相互传递信息的时间是一样的,不同处理器之间传递信息所需要的时间由一个矩阵的下三角给出。若矩阵对应位置为x,则说明相应的两个处理器之间无法传递信息。求从第一个处理器传递信息到其他所有处理器最少需要多少时间。
思路:赤裸裸的迪杰斯特拉
想做做迪杰斯特拉的题,先看了看dijkstra算法发现发现迪杰斯特拉的算法中完全可以不使用优先队列存储已经求得最短路径的点。使用数组 dist[ i ] 存储源点到 i 点的最短路径,初始时将 dist[ ] 每个元素初始化最大整数。起始将源点 s 压入队列中,dist[ s ] 设为0。 只要每次将更新了最短路径的点压入一个队列中,每次从队列头取出一个点 u ,检索以这个点为起点的边 e(u,v) ,如果发现 通过 e 可以得到更短的路径到达 v 点,就更新dist[v],同时将 v 点压入队列中。直至队列为空,算法完成,dist[ i ] 中就存储了源点到 i 点的最短距离。按照自己这种思路写完代码,直接通过样例,提交也直接AC ^_^
///2014.7.14///poj1502//Accepted732K16MSG++1254B2014-07-14 12:39:22//最短路径,不使用优先队列的dijkstra#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>using namespace std;const int MAXINT = pow(2,sizeof(int)*8-1)-1;int n;int edge[110][110];int dist[110];void init(){scanf("%d",&n);for(int i=0 ; i<n ; i++)dist[i] = MAXINT;dist[0] = 0;for(int i=0 ; i<n ; i++){for(int j=0 ; j<n ; j++){if( i==j )edge[i][j] = 0;else if( i>j ){char buf[15];scanf("%s",buf);if( buf[0]=='x' )edge[i][j] = edge[j][i] = -1;else{sscanf(buf,"%d",&edge[i][j]);edge[j][i] = edge[i][j];}}}}}void dijkstra(){queue<int> que;dist[0] = 0;que.push(0);while( !que.empty() ){int p = que.front();que.pop();for(int i=0 ; i<n ; i++){if( edge[p][i] != -1 ){if( dist[p]+edge[p][i] < dist[i] ){que.push(i);dist[i] = dist[p]+edge[p][i];}}}}}int findmax(){ int x = 0; for(int i=0 ; i<n ; i++) if( dist[i]>x ) x = dist[i]; return x;}int main(){//freopen("in","r",stdin);//freopen("out","w",stdout);init();dijkstra();cout<<findmax()<<endl;return 0;}
0 0
- poj1502 MPI Maelstrom 最短路径,dijkstra
- POJ1502 MPI Maelstrom(最短路径)
- POJ1502 MPI Maelstrom(最短路dijkstra)
- POJ1502 MPI Maelstrom(dijkstra,最短路)
- POJ1502 MPI Maelstrom Dijkstra
- poj1502 MPI Maelstrom 直接Dijkstra
- POJ1502---MPI Maelstrom(Dijkstra最短路基础题)
- poj1502 MPI Maelstrom 最短路
- MPI Maelstrom - POJ1502最短路
- POJ1502 MPI Maelstrom -DIJKSTRA练习系列
- POJ--1502:MPI Maelstrom (最短路径:Dijkstra算法 & Floyd算法)
- POJ1502 MPI Maelstrom 基本最短路
- poj1502 MPI Maelstrom(最短路中的最大值)
- poj1502 MPI Maelstrom(最短路)
- poj1502 - MPI Maelstrom
- poj1502 MPI Maelstrom
- MPI Maelstrom poj1502
- POJ1502 MPI Maelstrom
- ORACLE数据库名、实例名、ORACLE_SID的区别
- MySQL innodb parameters
- WINDOW PHONE sdK离线包下载
- Bayesian Face Revisited: A Joint Formulation 算法流程图
- glew在linux环境下的编译
- poj1502 MPI Maelstrom 最短路径,dijkstra
- .exe文件解压不出来/解压不出来.exe文件
- PHP面向对象(OOP)编程完全教程:8.构造方法__construct()与析构方法__destruct()
- ubuntu修改主机名后无法解析主机
- Choosing innodb_buffer_pool_size
- MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart
- PHP DOM
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- 基于需求的测试