Pagini recente » Cod sursa (job #628407) | Cod sursa (job #3132155) | Cod sursa (job #89521) | Cod sursa (job #2342050) | Cod sursa (job #1277510)
#include <fstream>
#include <queue>
#include <vector>
#define nod first
#define cost second
#define buffer 8192
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;
char C[buffer+16], *poz;
void Verif()
{
if (*poz == '\0')
{
fin.get(C, buffer, '\0');
poz = C;
}
}
int Get()
{
Verif();
while (*poz < '0' || *poz > '9')
{
poz++;
Verif();
}
int number = 0;
while (*poz >= '0' && *poz <= '9')
{
number = number * 10 + *poz - '0';
poz++;
Verif();
}
return number;
}
int main()
{
poz = C;
Verif();
N = Get(); M = Get(); X = Get(); Y = Get();
int x, y, c;
for (int i=1; i<=M; i++)
{
x = Get(); y = Get(); c = Get();
V[x].push_back(make_pair(y, c));
}
for (int i=1; i<=N; 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;
for (it = V[i].begin(); it != V[i].end(); it++)
{
if (D[it->nod] < max(it->cost, D[i]));
{
D[it->nod] = max(it->cost, D[i]);
Q.push(it->nod);
}
}
}
fout << D[Y] << '\n';
fout.close();
return 0;
}