#include <iostream>
#include <vector>
#include <climits>
using namespace std;
struct Edge {
int from, to, weight;
};
int main() {
int N, M;
cin >> N >> M; // N - количество комнат, M - количество дверей
vector<Edge> edges(M);
for (int i = 0; i < M; ++i) {
cin >> edges[i].from >> edges[i].to >> edges[i].weight;
}
// Инициализация расстояний
vector<int> dist(N + 1, INT_MIN); // INT_MIN означает "минус бесконечность"
dist[1] = 0; // Начальная комната
// Алгоритм Беллмана-Форда
for (int i = 1; i < N; ++i) {
for (const Edge& edge : edges) {
if (dist[edge.from] != INT_MIN && dist[
edge.to ] < dist[edge.from] + edge.weight) {
dist[
edge.to ] = dist[edge.from] + edge.weight;
}
}
}
// Выводим результат для комнаты N
cout << dist[N] << endl;
return 0;
}
В Летней Компьютерной Школе (ЛКШ) построили аттракцион «Лабиринт знаний». Лабиринт представляет собой комнат, занумерованных от 1 до , между некоторыми из которых есть двери. Когда человек проходит через дверь, показатель его знаний изменяется на определенную величину, фиксированную для данной двери. Вход в лабиринт находится в комнате 1, выход – в комнате . Каждый ученик проходит лабиринт ровно один раз и попадает в ту или иную учебную группу в зависимости от количества набранных знаний (при входе в лабиринт этот показатель равен нулю). Ваша задача показать наилучший результат.
Входные данные
2 2
1 2 3
1 2 7
Результат работы
7