poj 2387 Til the Cows Come Home
2010-10-17 18:01
441 查看
题意:求两点之间的最短距离,而且还是赤裸裸的,用的算法dijkstra。
代码:
代码:
#include <stdio.h> #define MAX 2000000 int map[1020][1020]; int shortl[1020][1020]; int dijkstra(int map[][1020],int n,int begin,int end); int main() { int i , j , k; int t,n; int dist; scanf("%d%d",&t,&n); for(i = 1; i <= n; i++) for(j = 1;j <= n;j++) map[i][j] = MAX; for(k = 0 ; k< t; k++) { scanf("%d%d%d",&i,&j,&dist); if( dist < map[i][j]) { map[i][j] = dist; map[j][i] = map[i][j]; } } printf("%d/n",dijkstra(map,n,1,n)); return 0; } int dijkstra(int map[][1020],int n,int begin,int end) { int i,k; int min,min_; int bools[1020],dist[1020]; for(i =1; i <= n; i++) bools[i] = 0; for(i = 1 ;i <= n; i++) dist[i] = map[begin][i]; bools[begin] = 1; for(k = 2;k <= n; k++) { min=MAX; for(i = 1; i <= n;i++) { if(dist[i]<min && bools[i]==0) { min = dist[i]; min_ = i; } } bools[min_] = 1; if(min_ == end) return min; for(i = 1 ; i <= n; i++) //更新最短距离 { if(bools[i]==0 && map[min_][i] < MAX) if(map[min_][i]+dist[min_] < dist[i]) dist[i] = map[min_][i] + dist[min_]; } } return min; }
相关文章推荐
- POJ 2387--Til the Cows Come Home
- poj-2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- 【POJ】[2387]Til the Cows Come Home
- poj 2387---Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- Poj 2387 Til the Cows Come Home
- POJ-2387 Til the Cows Come Home
- poj 2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- poj 2387 Til the Cows Come Home
- (最短路)POJ - 2387 :Til the Cows Come Home
- 【图论--Dijkstra】POJ 2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- POJ 2387 Til the Cows Come Home
- poj_2387_Til the Cows Come Home
- POJ 2387 Til the Cows Come Home