Cod sursa(job #2713327)

Utilizator sichetpaulSichet Paul sichetpaul Data 27 februarie 2021 18:30:31
Problema PScNv Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
#define Nmax 200005
using namespace std;

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

int N, M, x, y, Max, ans;
bool vis[Nmax], ok;
vector<pair<int, int> > G[Nmax];

void DFS(int node, int len) {
    if (node == y) ok = 1;
    else {
        for (auto it: G[node])
            if (!vis[it.first] && it.second <= len)
                 vis[it.first] = 1, DFS(it.first, len);
    }
}
int main()
{
    fin >> N >> M >> x >> y;
    for (int i = 1; i <= M; ++i) {
        int X, Y, C;
        fin >> X >> Y >> C;
        Max = max(Max, C);
        G[X].push_back({Y, C});
    }

    int le = 1, ri = Max;
    while (le <= ri) {
        int mid = (le + ri) / 2;
        memset(vis, 0, sizeof(vis));
        vis[x] = 1, ok = 0;

        DFS(x, mid);
        if (ok) ans = mid, ri = mid - 1;
        else le = mid + 1;
    }
       fout << ans << '\n';

    return 0;
}