Pagini recente » Cod sursa (job #2235813) | Cod sursa (job #2082150) | Cod sursa (job #1081690) | Cod sursa (job #356673) | Cod sursa (job #2521697)
#include <cstdio>
#include <fstream>
#include <queue>
using namespace std;
bool ok;
int x,y,n,m,sol;
vector<pair<int,int> > v[500005];
bool f[250005];
void dfs(int nod,int k){
if(ok==1)
return;
if(nod==y){
ok=1;
return;
}
for(int i=0;i<v[nod].size();i++){
if(ok==1)
return;
if(v[nod][i].second<=k and f[v[nod][i].first]==0){
f[v[nod][i].first]=1;
dfs(v[nod][i].first,k);
}
}
}
bool verif(int lim){
ok=0;
for(int i=1;i<=n;i++){
f[i]=0;
}
dfs(x,lim);
if(ok==1){
return true;
}
return false;
}
void cautbin(int st,int dr){
if(st>dr)
return;
int mid=(st+dr)>>1;
if(verif(mid)==true){
sol=mid;
cautbin(st,mid-1);
}
else{
cautbin(mid+1,dr);
}
}
int main()
{
//ifstream cin("pscnv.in");
//ofstream cout("pscnv.out");
freopen("pscnv.in","r",stdin);
freopen("pscnv.out","w",stdout);
int a,b,c;
//cin>>n>>m>>x>>y;
scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i=1;i<=m;i++){
//cin>>a>>b>>c;
scanf("%d%d%d",&a,&b,&c);
v[a].push_back(make_pair(b,c));
}
cautbin(1,1000);
//cout<<sol;
printf("%d",sol);
return 0;
}