Cod sursa(job #1277454)

Utilizator EpictetStamatin Cristian Epictet Data 27 noiembrie 2014 18:09:31
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <queue>
#include <vector>
#define nod first
#define cost second
using namespace std;
ifstream fin ("pscnv.in");
ofstream fout ("pscnv.out");
int N, M, X, Y, D[250010];
vector < pair < int, int > > V[250010];
queue < int > Q;
bool fr[250010];

int main()
{
    fin >> N >> M >> X >> Y;
    int x, y, c;
    for (int i=1; i<=M; i++)
    {
        fin >> x >> y >> c;
        V[x].push_back(make_pair(y, c));
    }

    for (int i=1; i<=250000; i++) D[i] = 1111;

    Q.push(X);
    D[X] = 0;
    while (!Q.empty())
    {
        int i = Q.front();
        Q.pop();
        vector < pair < int, int > > :: iterator it;
        if (!fr[i])
        {
            for (it = V[i].begin(); it != V[i].end(); it++)
            {
                D[it->nod] = min(D[it->nod], max(it->cost, D[i]));
                Q.push(D[it->nod]);
            }
        }
        fr[i] = 1;
    }

    fout << D[Y] << '\n';
    fout.close();
    return 0;
}