Pagini recente » Cod sursa (job #1212705) | Cod sursa (job #1391633) | Cod sursa (job #1522931) | Cod sursa (job #286895) | Cod sursa (job #2671691)
// By Stefan Radu
#include <bits/stdc++.h>
using namespace std;
#define sz(x) (int)(x).size()
typedef pair < int, int > pii;
typedef long long ll;
typedef long double ld;
typedef unsigned int ui;
typedef unsigned long long ull;
ifstream fin("pscnv.in");
ofstream fout("pscnv.out");
struct Edge {
int nei, weight;
};
vector < bool > used;
vector < vector < Edge > > gr;
bool getMost(int node, int y, int &most) {
if (node == y) return true;
used[node] = true;
for (auto edge : gr[node]) {
if (used[edge.nei]) continue;
most = max(most, edge.weight);
if (getMost(edge.nei, y, most)) return true;
}
return false;
}
int main() {
#ifdef STEF
freopen("input", "r", stdin);
freopen("output", "w", stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n, m, x, y;
fin >> n >> m >> x >> y;
gr.resize(n + 1);
used.resize(n + 1);
for (int i = 1; i <= m; ++ i) {
int a, b, c;
fin >> a >> b >> c;
gr[a].push_back({b, c});
}
for (int i = 1; i <= n; ++ i) {
sort(gr[i].begin(), gr[i].end(), [](Edge a, Edge b) -> bool {
return a.weight < b.weight;
});
}
int most = -1;
getMost(x, y, most);
fout << most << '\n';
}