POJ 1502 MPI Maelstrom(单源最短路|Dijkstra实现)
2010-06-05 00:27
543 查看
//单源最短路。最后答案应该处从起点到其他结点最短路中的最大值。 #include<iostream> #include<queue> using namespace std; const int INF = 50000000; int G[105][105]; bool flag[105]; int dis[105]; int n; int dijkstra(int st) { int res = INF*(-1); for(int i = 0;i < n;i++) dis[i] = (i == st ? 0 : INF);//初始化 memset(flag,0,sizeof(flag)); for(int i = 0;i < n;i++) { int x,_min = INF; for(int y = 0;y < n;++y) { if(!flag[y] && dis[y] < _min)//找出没标号结点中的最小值 _min = dis[x = y]; } flag[x] = 1;//标号 for(int y = 0;y < n;++y) { dis[y] = min(dis[y],dis[x] + G[x][y]);//从标号结点出发对其他所有点进行松弛操作 } } for(int i = st + 1;i < n;++i) if(dis[i] > res) res = dis[i];//找出单源最短路中的最大值 return res; } int main() { freopen("in.txt","r",stdin); char d[100]; scanf("%d",&n); memset(G,0,sizeof(G)); for(int i = 1;i < n;++i) { for(int j = 0;j < i;j++) { scanf("%s",d); if(d[0] != 'x') { G[i][j] = atoi(d); G[j][i] = atoi(d);//利用atoi函数将char*转化为int } else { G[i][j] = INF; G[j][i] = INF; } } } printf("%d/n",dijkstra(0)); return 0; }
相关文章推荐
- poj 1502 MPI Maelstrom(单源最短路dijkstra)
- POJ 1502 MPI Maelstrom(单源最短路|Floyd实现)
- POJ-1502-MPI Maelstrom [最短路][Dijkstra]
- POJ 1502 MPI Maelstrom(单源最短路)
- POJ 1502 MPI Maelstrom 最短路dijkstra
- poj_1502_MPI Maelstrom(Dijkstra求单源最短路径)
- POJ 1502 - MPI Maelstrom(单源最短路)
- POJ 1502 - MPI Maelstrom(单源最短路)
- poj 1502 MPI Maelstrom 单源最短路+dijkstra算法
- POJ 1502 MPI Maelstrom 单源最短路 Floyd Dijkstra
- POJ - 1502 MPI Maelstrom(最短路dijkstra)
- POJ 1502 MPI Maelstrom 最短路dijkstra
- POJ 1502 MPI Maelstrom [最短路 Dijkstra]
- POJ 1125 单源最短路 dijkstra的算法初步探索
- [算法] poj 2387 单源最短路 Dijkstra
- poj 1502 MPI Maelstrom dijkstra基础 入门 点型模板题
- POJ 1502 MPI Maelstrom (最短路)
- 用邻接map 和队列实现的单源 Dijkstra最短路
- POJ 1502:MPI Maelstrom Dijkstra模板题
- POJ 1502 MPI Maelstrom BFS最短路