Cod sursa(job #2669654)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 7 noiembrie 2020 15:23:24
Problema PScNv Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<bits/stdc++.h>
using namespace std;

int x,y,n,m;
vector<int>v[250010];
vector<int> d[250010];
queue<int> q;
bool bfs(int len){
    cout<<len<<": ";
    vector<bool> viz(n+1, 0);

    while(!q.empty()) q.pop();
    q.push(x);
    viz[x] = 1;
    while(!q.empty() && !viz[y]){
        int curr = q.front();
        viz[curr] = 1;
        cout<<curr<<' ';
        q.pop();
        for(int i = 0;i<v[curr].size();i++){
            int next = v[curr][i];
            if(!viz[next]  && d[curr][i] <= len){

                q.push(next);
            }
        }

    }
    cout<<'\n';
    return viz[y];
}


int cautbin(){

    int st = 0, dr = 1000,mid, last;
    while(st<=dr){
        mid = (st+dr)/2;

        if(bfs(mid)){
            dr = mid - 1;
        }
        else
            st = mid+1;
    }
    return st;

}


int main(){
    ifstream cin("pscnv.in");
    ofstream cout("pscnv.out");
    cin>>n>>m>>x>>y;
    for(int i = 0;i<m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        v[a].push_back(b);
        d[a].push_back(c);
    }
    cout<<cautbin();

    return 0;
}