POJ 2387--Til the Cows Come Home

題目:這是題目

題意:Famer John 在N點,求到1點的最短路。

思路:最短路

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;

const int MAX = 1005;
int _map[MAX][MAX];
int d[MAX];
int t, n;

int length = 100005;

void dfs(int start, int sum) {
    for (int i =1; i <= n; i++) {
        if (_map[start][i] > 0) {//有路
            if (d[i] > d[start] + _map[start][i]) {//到i點的路擁有更短的路
                sum += _map[start][i];
                d[i] = d[start] + _map[start][i];
                dfs(i, sum);//從i點繼續搜
                sum -= _map[start][i];
            }
        }
    }
}

int main() {
    int st, en, len;
    scanf("%d%d", &t, &n);
    memset(_map, 0, sizeof(_map));
    for (int i = 1; i <= n; i++) {
        d[i] = length;
    }
    d[n] = 0;
    for (int i = 0; i < t; i++) {
        scanf("%d%d%d", &st, &en, &len);
        if ((_map[st][en] > 0 && _map[st][en] > len) || _map[st][en] == 0) {
            _map[st][en] = len;
            _map[en][st] = len;
        }
    }
    dfs(n, 0);
    printf("%d\n", d[1]);
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章