Pagini recente » Istoria paginii utilizator/rzv_best | Diferente pentru warm-up-2019/solutii/shoturi intre reviziile 50 si 49 | Cod sursa (job #1007966) | Monitorul de evaluare | Cod sursa (job #1640151)
#include <fstream>
#include <algorithm>
using namespace std;
#define pi pair < int, int >
ifstream in("pscnv.in");
ofstream out("pscnv.out");
const int N = 250100;
const int KMAX = 1005;
int n, m;
vector < pi > adj[N];
vector < int > nod_dist[KMAX];
int dmin[N];
void dijkstra_small(int x, int y) {
int i, d, nod;
for(i = 1; i <= n; i++) dmin[i] = 0x3fffffff;
dmin[x] = 0;
nod_dist[0].push_back(x);
for(i = 0; i < KMAX; i++) {
for(auto j : nod_dist[i]) {
if(dmin[j] > i) continue;
for(auto k : adj[j]) {
d = max(i, k.second);
nod = k.first;
if(dmin[nod] > d) {
dmin[nod] = d;
nod_dist[d].push_back(nod);
}
}
}
}
}
int main() {
int x, y, i, a, b, c;
in >> n >> m >> x >> y;
for(i = 1; i <= m; i++) {
in >> a >> b >> c;
adj[a].push_back(make_pair(b, c));
}
dijkstra_small(x, y);
out << dmin[y] << '\n';
return 0;
}