Pagini recente » Cod sursa (job #1701952) | Cod sursa (job #2144119) | Cod sursa (job #2742042) | Cod sursa (job #3184858) | Cod sursa (job #3145987)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pscnv.in");
ofstream fout("pscnv.out");
const int kN = 25e4;
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;
vector<int> vals;
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);
vals.emplace_back(k);
}
sort(vals.begin(), vals.end());
vals.erase(unique(vals.begin(), vals.end()), vals.end());
int l = 0, r = vals.size() - 1, mid;
while(l <= r) {
mid = (l + r) >> 1;
k = vals[mid];
vis = vector<bool>(n, 0);
if(dfs()) {
r = mid - 1;
} else {
l = mid + 1;
}
}
fout << vals[r + 1] << '\n';
return 0;
}