HDU 2544最短路

myhalfsea posted @ 2010年3月19日 03:22 in ACM , 852 阅读

#include<iostream>
using namespace std;

#define max 0x70ffffff
int map[105][105];
int visit[105];
int dis[105];

int main()
{
    int n, m, a, b, c;
    int i, j, k;
    int min;
    while ( scanf("%d%d", &n, &m) && !( n ==0 && m == 0) ) {
        for ( i = 1; i <= n; i++ ) {
            for ( j = 0; j <= n; j++ )
                map[i][j] = max;
            visit[i] = 0;
        }
        for ( i = 0; i < m; i++ ) {
            scanf( "%d%d%d", &a, &b, &c );
            map[a][b] = map[b][a] = c;
        }
        for ( i = 1; i <= m; i++ )
            dis[i] = map[1][i];
        visit[1] = 1;
        dis[1] = 0;
        for ( i = 1; i <= m; i++ ) {
            min = max;
            for ( j = 1; j <= m; j++ ) {
                if ( dis[j] < min && !visit[j] ) {
                    min = dis[j];
                    k = j;
                }
            }
            if ( min == max ) break;
            visit[k] = 1;
            for( j = 1; j <= n; j++ ) {
                  if( min + map[k][j] < dis[j] && !visit[j] )
                      dis[j] = min + map[k][j];
            }
        }
        printf("%d\n", dis[n]);
    }

    return 0;
}


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta
Butterfly Theme | Design: HRS Hersteller of mobile Hundeschule.