Cod sursa(job #3145984)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 17 august 2023 18:43:27
Problema PScNv Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int x, y, k;
vector<vector<pair<int, int>>> adj;
vector<bool> vis;

void maxSelf(int &x, int y) {
	if(y > x) {
		x = y;
	}
}

bool dfs(int u = x) {
	if(u == y) {
		return 1;
	}
	bool ans = 0;
	vis[u] = 1;
	for(const auto &it: adj[u]) {
		if(!vis[it.first] && it.second <= k) {
			ans |= dfs(it.first);
		}
		if(ans == 1) {
			break;
		}
	}
	return ans;
}

int main() {
	int n, m;
	fin >> n >> m >> x >> y;
	x--; y--;
	adj = vector<vector<pair<int, int>>>(n);
	int kmax = 1;
	for(int i = 0; i < m; i++) {
		int u, v, k;
		fin >> u >> v >> k;
		u--; v--;
		adj[u].emplace_back(v, k);
		maxSelf(kmax, k);
	}
	int l = 1, r = kmax, mid;
	while(l <= r) {
		mid = (l + r) >> 1;
		k = mid;
		vis = vector<bool>(n, 0);
		if(dfs()) {
			r = mid - 1;
		} else {
			l = mid + 1;
		}
	}
	fout << r + 1 << '\n';
	return 0;
}