Cod sursa(job #2229738)

Utilizator tanasaradutanasaradu tanasaradu Data 8 august 2018 01:10:59
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("pscnv.in");
ofstream fout ("pscnv.out");

const int NMAX =  100005;

int n , m , x , y;

vector < pair < int , int > > L[NMAX];

queue < int > Q;

bitset < NMAX > viz;

inline bool CHECK(int val)
{
    int aux;
    Q . push(x);
    viz[x] = true;
    while(! Q . empty())
    {
        aux = Q . front();
        Q . pop();
        for(auto it : L[aux])
            if(!viz[it . first] && it . second <= val)
        {
            if(it . first == y)
                return true;
            Q . push(it . first);
            viz[it . first] = true;
        }
    }
    return false;
}

int main()
{
    int X , Y , k , left , middle , poz , right;
    fin >> n >> m >> x >> y;
    while(m--)
    {
        fin >> X >> Y >> k;
        L[x] . push_back({Y , k});
    }
    left = 1 , right = 1000;
    while(left <= right)
    {
        middle = (left + right) / 2;
        if(CHECK(middle))
            poz = middle, right = middle - 1;
        else left = middle + 1;
        viz . reset();
        while(!Q . empty())
            Q . pop();
    }
    fout << poz << '\n';
    fin.close();
    fout.close();
    return 0;
}