题目:这是题目
题意: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;
}