Cod sursa(job #1184646)

Utilizator vyrtusRadu Criuleni vyrtus Data 13 mai 2014 18:44:01
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

#define mmax 500001
#define nmax 250001
#define inf 999999;

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

struct st{ int MIN,MAX;};

vector <pair<int,int> > drum[mmax];
queue <int> coada;
int N,M,X,Y,xi,yi,ci;
st A[nmax];

int main()
{
    f >> N >> M >> X >> Y;
    for (int i=1;i<=N;i++)
    {
        f >> xi >> yi >> ci;
        drum[xi].push_back(make_pair(yi,ci));
        A[i].MAX = A[i].MIN = inf;
    }

    coada.push(X);
    A[X].MIN = A[X].MAX = 0;
    while (!coada.empty())
    {
        int nod = coada.front();
            coada.pop();
      // first -unde  ;   second - cost;
         for (int i=0;i < drum[nod].size(); i++ )
         {
             int t = drum[nod][i].first;
             if ((drum[nod][i].second <= A[t].MIN) && (A[nod].MAX < A[t].MAX))
             {
                coada.push(t);
                A[t].MIN = drum[nod][i].second;
                A[t].MAX = max(A[nod].MAX,A[t].MIN);
             }
         }
    }
    g << A[Y].MAX;
    return 0;
}