Pagini recente » Cod sursa (job #240461) | Cod sursa (job #983533) | Cod sursa (job #2728440) | Cod sursa (job #3190443) | Cod sursa (job #751255)
Cod sursa(job #751255)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <cctype>
#include <cstring>
#define INF 1000000000
using namespace std;
ifstream fin("pscnv.in");
ofstream fout("pscnv.out");
queue<int> q;
vector<pair<int,int> > v[250001];
int c[250001];
bool inq[250001];
char pars[5000000];
int curent=0;
inline bool compare(const pair<int,int>& a, const pair<int,int>& b)
{
return a.second<b.second;
}
int getnr()
{
int nr=0;
while(!isdigit(pars[curent]))
curent++;
while(isdigit(pars[curent]))
{
nr=nr*10+(pars[curent]-'0');
curent++;
}
return nr;
}
int main()
{
int n=0,m=0,x,y,a,b,k;
fin.getline(pars,sizeof(pars),'\0');
n=getnr();
m=getnr();
x=getnr();
y=getnr();
for(int i=1;i<=n;i++)
c[i]=INF;
for(int i=1;i<=m;i++)
{
a=getnr();
b=getnr();
k=getnr();
v[a].push_back(make_pair(b,k));
}
for(int i=1;i<=n;i++)
sort(v[i].begin(),v[i].end(),compare);
q.push(x);
c[x]=0;
while(!q.empty())
{
int F = q.front();
inq[F]=false;
for(int i=0;i<v[F].size();i++)
if(max(c[F],v[F][i].second)<c[v[F][i].first])
{
c[v[F][i].first] = max(c[F],v[F][i].second);
if(!inq[v[F][i].first])
{
q.push(v[F][i].first);
inq[v[F][i].first]=true;
}
}
q.pop();
}
fout<<c[y]<<'\n';
fin.close();
fout.close();
return 0;
}