Cod sursa(job #1640151)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 8 martie 2016 16:04:33
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#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;
}