Pagini recente » Cod sursa (job #143426) | Cod sursa (job #2862562) | Cod sursa (job #2177999) | Cod sursa (job #2682323) | Cod sursa (job #2521693)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
bool ok;
int x,y,n,m,sol;
vector<pair<int,int> > v[200005];
bool f[200005];
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)/2;
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");
int a,b,c;
cin>>n>>m>>x>>y;
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
v[a].push_back(make_pair(b,c));
}
cautbin(1,1000);
cout<<sol;
return 0;
}