poj 1502 MPI Maelstrom
2015-01-20 22:22
591 查看
题目链接:
http://poj.org/problem?id=1502
题目大意:
有一个信息传递系统,含有n个处理器,传递信息的方式是:刚开始编号为1的处理器拥有信息,他可以传给下一个处理器,然后这两个拥有信息的处理器可以同时向下传递给其他两个处理器,拥有信息的四个处理器再依次如此传递,直到所有处理器都接受到信息的最短时间是多少?
解题思路:
把传递路径画出来,看出可以转化成求从1到其他位置的最短路径中的最长路径,刚看到题目感觉没什么思路,但是建立出来模型以后用dijkstra就好啦!
http://poj.org/problem?id=1502
题目大意:
有一个信息传递系统,含有n个处理器,传递信息的方式是:刚开始编号为1的处理器拥有信息,他可以传给下一个处理器,然后这两个拥有信息的处理器可以同时向下传递给其他两个处理器,拥有信息的四个处理器再依次如此传递,直到所有处理器都接受到信息的最短时间是多少?
解题思路:
把传递路径画出来,看出可以转化成求从1到其他位置的最短路径中的最长路径,刚看到题目感觉没什么思路,但是建立出来模型以后用dijkstra就好啦!
#include <vector> #include <queue> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; #define maxn 110 #define INF 0x3f3f3f3f int map[maxn][maxn], dist[maxn], n; void init (); void dijkstra (); int main () { while (scanf ("%d", &n) != EOF) { char s[20]; init (); for (int i=1; i<=n; i++) for (int j=1; j<i; j++) { scanf ("%s", s); if (s[0] <= '9' && s[0] >= '0') { map[i][j] = 0; for (int k=0; s[k]; k++) map[i][j] = map[i][j] * 10 + s[k] - '0'; map[j][i] = map[i][j];//路径是双向的 } } dijkstra (); int mini = 0; for (int i=2; i<=n; i++) mini = max(mini, dist[i]); printf ("%d\n", mini); } return 0; } void init () { int i, j; for (i=0; i<maxn; i++) for (j=0; j<maxn; j++) if (i == j) map[i][j] = 0;//自身到达自身所用花费为零 else map[i][j] = INF; } void dijkstra () { bool vis[maxn]; memset (vis, false, sizeof(vis)); for (int i=1; i<=n; i++) dist[i] = map[1][i]; vis[1] = true; for (int i=1; i<n; i++) { int temp = INF, index; for (int j=2; j<=n; j++) { if (!vis[j] && temp > dist[j]) { index = j; temp = dist[j]; } } vis[index] = true; for (int j=2; j<=n; j++) if (!vis[j] ) dist[j] = min(dist[j] , dist[index] + map[index][j]); } }
相关文章推荐
- POJ - 1502 MPI Maelstrom(dijkstra/spfa)
- POJ 1502 MPI Maelstrom (简单最短路,多种算法均可)
- poj 1502 MPI Maelstrom【dijkstra】
- POJ 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom (Dijkstra算法+输入处理)
- poj 1502 MPI Maelstrom
- POJ_1502_MPI Maelstrom_最短路径
- POJ-1502-MPI Maelstrom
- POJ-1502 MPI Maelstrom( 最短路 )
- poj 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom( Spfa, Floyd, Dijkstra)
- POJ 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom (最短路)
- POJ 1502 MPI Maelstrom最短路问题
- POJ 1502 MPI Maelstrom (最短路)
- POJ 1502 MPI Maelstrom
- poj 1502--MPI Maelstrom (最短路spfa)
- poj 1502 MPI Maelstrom
- POJ-1502 MPI Maelstrom(最短路)
- POJ 1502 MPI Maelstrom 最短路