Cod sursa(job #1916013)

Utilizator valentinoMoldovan Rares valentino Data 8 martie 2017 23:39:23
Problema PScNv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <vector>
#include <iostream>
#include <queue>
#define inf 0x3f3f3f3f
#define NM 250005
using namespace std;

ifstream f("pscnv.in");
ofstream g("pscnv.out");

vector < pair < int, int > > graf[NM];
int n, m, x, y, sol[NM], viz[NM];
queue < int > q;

void BellmanFord(int start)
{
    int nod, nod2, c;
    for(int i = 1; i <= n; ++i) sol[i] = inf;
    sol[start] = 0;
    q.push(start);
    while(!q.empty())
    {
        nod = q.front();
        viz[nod] = 0;
        q.pop();
        for(int i = 0; i < graf[nod].size(); ++i)
        {
             nod2 = graf[nod][i].first;
             c = graf[nod][i].second;
             if(max(sol[nod], c) < sol[nod2])
             {
                 sol[nod2] = max(sol[nod], c);
                 if(!viz[nod2])
                 {
                     viz[nod2] = 1;
                     q.push(nod2);
                 }
             }
        }
    }
}

int main()
{
    int a, b, c;
    f >> n >> m >> x >> y;
    for(int i = 1; i <= m; ++i)
    {
        f >> a >> b >> c;
        graf[a].push_back(make_pair(b, c));
    }
    BellmanFord(x);
    g << sol[y] << '\n';
}