Pagini recente » Cod sursa (job #2144764) | Cod sursa (job #2042953) | Cod sursa (job #647595) | Istoria paginii utilizator/vkaterina11 | Cod sursa (job #1640173)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cctype>
using namespace std;
#define pi pair < int, int >
const int N = 250100;
const int KMAX = 1005;
const int BSIZE = 1 << 10;
int n, m;
vector < pi > adj[N];
vector < int > nod_dist[KMAX];
int dmin[N];
char buff[BSIZE];
int parse(int &i) {
int v = 0;
while(isdigit(buff[i])) {
v = v * 10 + buff[i] - '0';
i++;
}
return v;
}
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) continue;
dmin[nod] = d;
nod_dist[d].push_back(nod);
}
}
}
}
int main() {
freopen("pscnv.in", "r", stdin);
freopen("pscnv.out", "w", stdout);
int x, y, i, j, a, b, c;
scanf("%d %d %d %d\n", &n, &m, &x, &y);
for(i = 1; i <= m; i++) {
gets(buff);
a = parse(j = 0);
b = parse(++j);
c = parse(++j);
adj[a].push_back(make_pair(b, c));
}
dijkstra_small(x, y);
printf("%d\n", dmin[y]);
return 0;
}