poj 1502 MPI Maelstrom
2011-07-22 20:24
197 查看
#include <iostream> //最短路径的最长边 using namespace std; const int MAXN=120; const int INF=1<<30; int n,edge[MAXN][MAXN],distD[MAXN],vis[MAXN]; int ans; void Dijstra(int st) //从源点st到其余各顶点的最短路径长度 { memset(vis,0,sizeof(vis)); for(int i=0;i<n;++i) //结点下标从0开始 distD[i]=(i==st?0:INF); for(int i=0;i<n;++i) //对全部顶点计算最短路径 { int x,m=INF; for(int y=0;y<n;++y) if(!vis[y]&&distD[y]<m) m=distD[x=y]; vis[x]=1; if(i==n-1) ans=distD[x]; //最短路径的最长边 for(int y=0;y<n;++y) if(!vis[y]&&edge[x][y]!=INF) distD[y]=min(distD[y],distD[x]+edge[x][y]); } } void init() { scanf("%d",&n); for(int i=0;i<n;++i) fill(&edge[i][0],&edge[i] ,INF); //不需要另外设置edge[i][i]=0; char s[20]; int d; for(int i=1;i<n;++i) { for(int j=0;j<i;++j) { scanf("%s",s); if(strcmp(s,"x")!=0) { sscanf(s,"%d",&d); edge[i][j]=edge[j][i]=d; } } } } int main() { init(); Dijstra(0); printf("%d\n",ans); return 0; }
相关文章推荐
- poj 1502 MPI Maelstrom dijkstra基础 入门 点型模板题
- POJ-1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom(单源最短路|Floyd实现)
- POJ-1502-MPI Maelstrom [最短路][Dijkstra]
- poj 1502 MPI Maelstrom
- 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 最短路
- poj 1502:MPI Maelstrom
- POJ 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom
- POJ 1502 - MPI Maelstrom(单源最短路)
- POJ 1502 MPI Maelstrom
- POJ - 1502 MPI Maelstrom(dijkstra/spfa)
- POJ 1502 MPI Maelstrom【floyd】
- poj 1502 MPI Maelstrom(最短路)
- poj 1502 MPI Maelstrom