标签:des style blog http color os strong io
Description
Input
Output
Sample Input
Sample Output
#include <stdio.h> #include <string.h> #define ff 999999; int max; int map[1001][1001]; int vt[1001]={0}; int dis[1001]; void dijkstra() { int i, j, pos, k, min; for(k=0; k<max; k++) { pos = 0; min =ff; for(i=0; i<max+1; i++) { if(vt[i]==0 && dis[i]<min ) { pos = i; min = dis[i] ; } } vt[pos] = 1; for(i=0; i<max+1; i++ ) { if( vt[i]==0 && dis[i]>dis[pos] + map[i][pos] ) { dis[i] = dis[pos] + map[i][pos] ; } } } } int main() { int t, s, d, dd, aa[1005]; int i, j; int mm, kk; int u, v, w; while(scanf("%d %d %d", &t, &s, &d )!=EOF) { for(i=0; i<1001; i++) { for(j=0; j<1001; j++) { map[i][j] = ff; } } memset(vt, 0, sizeof(vt)); max=-1;//Max用来确定数据最大的范围 for(i=0; i<t; i++) { scanf("%d %d %d", &u, &v, &w ); if(map[u][v] > w) { map[u][v] = w; map[v][u] = w; } if(u >max ) { max = u; } if(v >max) { max = v ; } } for(i=0; i<s; i++) { scanf("%d", &dd); map[0][dd] = 0; } mm = ff; for(j=0; j<d; j++) { scanf("%d", &aa[j] ) ; //输入终点 } for(i=0; i<max+1; i++) { dis[i] = map[0][i] ; } vt[0] = 1; dijkstra(); int min=ff; for(i=0; i<d; i++) { if(min>dis[aa[i]] ) min=dis[aa[i]]; } printf("%d\n", min ); } return 0; }
标签:des style blog http color os strong io
原文地址:http://www.cnblogs.com/yspworld/p/3885664.html