Pagini recente » Cod sursa (job #131345) | Cod sursa (job #1257327) | Cod sursa (job #3151379) | Cod sursa (job #2595481) | Cod sursa (job #1184646)
#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;
}