#include <iostream> #include <memory.h> using namespace std; const int IN = (1<<28); int N,M,S,T; int G[205][205]; int dist[205]; int visited[205]; void dij() { for( int i = 1; i <= N; i++ ) dist[i] = G[S+1][i]; visited[S+1] = 1; while( 1 ) { int MinV = 0,Min = IN; for( int i = 1; i <= N; i++ ) { if( !visited[i] && dist[i] < Min ) { Min = dist[i]; MinV = i; } } if( !MinV ) break; else { visited[MinV] = 1; for( int i = 1; i <= N; i++ ) { if( !visited[i] && dist[i] > dist[MinV] + G[MinV][i]) dist[i] = dist[MinV] + G[MinV][i]; } } } } int main() { while( cin >> N >> M ) { memset(dist, 0, sizeof(dist)); memset(G, 0, sizeof(G)); memset(visited, 0, sizeof(visited)); for( int i = 1; i <= N; i++ ) for( int j = 1; j <= N; j++ ) { if( i==j ) { G[i][j] = 0; } else G[i][j] = IN; } while( M-- ) { int Begin,End,Length; cin >> Begin >> End >> Length; if( Length <= G[Begin+1][End+1] ) { G[Begin+1][End+1] = Length; G[End+1][Begin+1] = Length; } } cin >> S >> T; dij(); if( dist[T+1] != IN ) cout << dist[T+1] << endl; else cout << -1 << endl; } return 0; }
hdoj 畅通工程 没有最短路的情况
猜你喜欢
转载自blog.csdn.net/xutian_curry/article/details/80212905
今日推荐
周排行