poj 1502 MPI Maelstrom--dijkstra--atoi
2011-08-10 09:15
337 查看
/* 先求各点到1的最短路 然后从个最短路中找到最大值 原型:int atoi(const char *nptr); 函数说明:参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回0, 否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。 */ #include<stdio.h> #include<stdlib.h> #include<string.h> int map[110][110],vis[110],dist[110],n; char s[1000]; int zhao() { int i,xia=-1; for(i=1;i<=n;i++) if(vis[i]==0&&(xia==-1||dist[i]<dist[xia])) xia=i; return xia; } int dijkstra() { int max=0,i,j,xia; memset(vis,0,sizeof(vis)); vis[1]=1; for(i=1;i<=n;i++) dist[i]=map[1][i]; for(i=2;i<=n;i++) { xia=zhao(); vis[xia]=1; for(j=1;j<=n;j++) if(vis[j]==0&&dist[j]>dist[xia]+map[xia][j]) dist[j]=dist[xia]+map[xia][j]; } for(i=2;i<=n;i++) if(dist[i]>max) max=dist[i]; return max; } int main() { int i,j,k; scanf("%d",&n); getchar(); for(i=2;i<=n;i++) { gets(s); j=1; k=0; while(s[k]) { if(s[k]=='x') { map[i][j++]=999999999; k=k+2; continue; } map[i][j++]=atoi(s+k); while(s[k]>='0'&&s[k]<='9') k++; while(s[k]==' ') k++; } } for(i=1;i<=n;i++) { for(j=i;j<=n;j++) if(i==j) map[i][i]=0; else map[i][j]=map[j][i]; } printf("%d\n",dijkstra()); return 0; }
相关文章推荐
- POJ 1502 MPI Maelstrom——dijkstra
- (简单) POJ 1502 MPI Maelstrom,Dijkstra。
- POJ 1502 MPI Maelstrom(Dijkstra)
- Dijkstra-POJ-1502-MPI Maelstrom
- POJ ~ 1502 ~ MPI Maelstrom (Dijkstra + 字符处理)
- poj 1502 MPI Maelstrom dijkstra基础 入门 点型模板题
- POJ 1502 MPI Maelstrom 最短路dijkstra
- Poj 1502 MPI Maelstrom (Dijkstra
- 【图论--Dijkstra】POJ 1502 MPI Maelstrom
- poj_1502_MPI Maelstrom(Dijkstra求单源最短路径)
- POJ - 1502 MPI Maelstrom(dijkstra/spfa)
- poj 1502 MPI Maelstrom(单源最短路dijkstra)
- POJ 1502 MPI Maelstrom Dijkstra
- POJ 1502 MPI Maelstrom(单源最短路|Dijkstra实现)
- POJ 1502 MPI Maelstrom( Spfa, Floyd, Dijkstra)
- POJ - 1502 MPI Maelstrom —— dijkstra
- POJ 1502:MPI Maelstrom Dijkstra模板题
- POJ - 1502----MPI Maelstrom(Dijkstra)
- POJ 1502:MPI Maelstrom Dijkstra模板题
- POJ 1502 MPI Maelstrom 最短路dijkstra