Pagini recente » Cod sursa (job #931013) | Cod sursa (job #2249316) | Cod sursa (job #2430915) | Cod sursa (job #752957) | Cod sursa (job #3145985)
#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;
bitset<kN> 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 = 0;
if(dfs()) {
r = mid - 1;
} else {
l = mid + 1;
}
}
fout << r + 1 << '\n';
return 0;
}