POJ 2387--Til the Cows Come Home

题目:这是题目

题意:Famer John 在N点,求到1点的最短路。

思路:最短路

#include 
#include 
#include 
#include 
#include 
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;
}


你可能感兴趣的:(DFS)