Pagini recente » Cod sursa (job #870957) | Cod sursa (job #1774853) | Cod sursa (job #1736508) | Cod sursa (job #1105564) | Cod sursa (job #482690)
Cod sursa(job #482690)
#include <fstream>
#include <vector>
#include <queue>
#define Nmax 250002
#define Valmax 1002
#define pb push_back
#define mp make_pair
#define y first
#define c second
using namespace std;
ifstream fin("pscnv.in");
ofstream fout("pscnv.out");
vector< pair<int,int> > G[Nmax];
queue< int > v[Valmax];
int d[Nmax];
int N,M,X,Y,vmax;
inline int Maxim(int x,int y){ return x>y ? x:y; }
void dijkstra(){
vector< int >:: iterator it;
vector< pair<int,int> >:: iterator it2;
int i,wh;
for(i=1;i<=N;++i)
d[i]=vmax+1;
d[X]=0;
v[0].push(X);
for(i=0; i<=vmax; ++i)
while( ! v[i].empty() ){
wh=v[i].front(); v[i].pop();
if( wh==Y ) return;
if( d[wh] == i ){
for(it2=G[wh].begin(); it2!=G[wh].end(); ++it2)
if( d[it2->y] > Maxim(d[wh],it2->c) ){
d[it2->y] = Maxim(d[wh],it2->c);
v[d[it2->y]].push(it2->y);
}
}
}
}
int main(){
int i,x,y,z;
fin>>N>>M>>X>>Y;
for(i=1;i<=M;++i){
fin>>x>>y>>z;
if( x!=y ){
G[x].pb(mp(y,z));
vmax=Maxim(vmax,z);
}
}
dijkstra();
fout<<d[Y]<<"\n";
fin.close(); fout.close();
return 0;
}