Cod sursa(job #2521693)

Utilizator NashikAndrei Feodorov Nashik Data 11 ianuarie 2020 12:49:06
Problema PScNv Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#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;
}