Pagini recente » Cod sursa (job #1789897) | Cod sursa (job #2750891) | Cod sursa (job #1767891) | Cod sursa (job #2497961) | Cod sursa (job #1150819)
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#define PII pair<int, int>
#define x first
#define y second
#define mp make_pair
using namespace std;
const int N=250005, M=1001, INF=0x3f3f3f3f;
vector <PII> G[N];
vector <int> C[M];
int dist[N];
int n, start, finish;
void Solve()
{
int i, x;
memset(dist, INF, sizeof(dist));
dist[start]=0;
C[0].push_back(start);
for(i=0;i<M;i++)
{
for(size_t j=0;j<C[i].size();j++)
{
x=C[i][j];
if(dist[x]!=i) continue;
if(x==finish)
{
printf("%d\n", dist[x]);
return;
}
for(auto p: G[x])
{
if(max(i, p.y)<dist[p.x])
{
dist[p.x]=max(i, p.y);
C[max(i, p.y)].push_back(p.x);
}
}
}
C[i].clear();
}
}
int main()
{
freopen("pscnv.in", "r", stdin);
freopen("pscnv.out", "w", stdout);
int m, x, y, z;
scanf("%d%d%d%d", &n, &m, &start, &finish);
while(m--)
{
scanf("%d%d%d", &x, &y, &z);
G[x].push_back(mp(y, z));
}
Solve();
}