Pagini recente » Cod sursa (job #2587024) | Cod sursa (job #2335864) | Cod sursa (job #45031) | Cod sursa (job #2848428) | Cod sursa (job #1477321)
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int NMax=250005;
const int INFINIT=0x3f3f3f3f;
vector<pair<int,int>> Graf[NMax];
queue<pair<int,int> > Q;
int D[NMax],N,M,x,y;
void Read()
{
scanf("%d%d%d%d",&N,&M,&x,&y);
for(int i=1;i<=M;i++)
{
int a,b,ki;
scanf("%d%d%d",&a,&b,&ki);
Graf[a].push_back(make_pair(b,ki));
}
}
void BellManFord(int StartNod)
{
memset(D,INFINIT,sizeof(D));
D[StartNod]=0;
Q.push(make_pair(StartNod,0));
while(Q.empty()==false)
{
int nod=Q.front().first;
int nodk=Q.front().second;
Q.pop();
for(vector<pair<int,int> >::iterator it=Graf[nod].begin();it!=Graf[nod].end();it++)
{
int k=max(nodk,it->second);
if(k<D[it->first])
{
D[it->first]=k;
Q.push(make_pair(it->first,k));
}
}
}
}
int main()
{
freopen("pscnv.in","r",stdin);
freopen("pscnv.out","w",stdout);
Read();
BellManFord(x);
printf("%d",D[y]);
}