Pagini recente » Cod sursa (job #2804908) | Cod sursa (job #3226517) | Cod sursa (job #1952234) | Cod sursa (job #2733455) | Cod sursa (job #2479233)
#include<fstream>
#include<stdio.h>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
FILE *fi=fopen("pscnv.in","r");
ofstream fo("pscnv.out");
int n,m,x,y,a,b,c,C[250005],i,ind,l;
vector<pair<int,int> > V[250005];
priority_queue<pair<int,int> > Q;
vector<pair<int,int> >::iterator it;
pair<int,int> val;
char S[100005];
void nextS()
{
ind=0;
fread(S,1,100000,fi);
l=strlen(S);
}
int nextInt()
{
int r=0;
if(ind==l)
nextS();
while(S[ind]<'0' || S[ind]>'9')
{
ind++;
if(ind==l)
nextS();
}
while(S[ind]>='0' && S[ind]<='9')
{
r=r*10+S[ind]-'0';
ind++;
if(ind==l)
nextS();
}
return r;
}
int main()
{
n=nextInt();
m=nextInt();
x=nextInt();
y=nextInt();
for(i=1; i<=m; i++)
{
a=nextInt();
b=nextInt();
c=nextInt();
V[a].push_back({b,c});
}
for(i=1; i<=n; i++)
C[i]=-1;
C[x]=0;
Q.push({0,x});
while(!Q.empty())
{
val=Q.top();
Q.pop();
if(C[val.second]!=-val.first)
continue;
for(it=V[val.second].begin(); it!=V[val.second].end(); it++)
{
c=max((*it).second,-val.first);
if(C[(*it).first]==-1 || C[(*it).first]>c)
{
C[(*it).first]=c;
Q.push({-c,(*it).first});
}
}
}
fo<<C[y]<<"\n";
fclose(fi);
fo.close();
return 0;
}