Pagini recente » Cod sursa (job #1974431) | Cod sursa (job #1122082) | Cod sursa (job #1372361) | Cod sursa (job #2327808) | Cod sursa (job #2479225)
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
ifstream f ("pscnv.in");
ofstream g ("pscnv.out");
constexpr int NMAX = 25e4 + 5;
int n, m, x, y;
vector <pair <int, int> > G[NMAX];
bool viz[NMAX];
void dfs (int nod, int val)
{
viz[nod] = 1;
for (int i=0; i<G[nod].size(); ++i)
{
int y = G[nod][i].first;
int cost = G[nod][i].second;
if (!viz[y] && cost <= val) dfs(y, val);
}
}
bool verif(int val)
{
for (int i=1; i<=n; ++i)
viz[i] = 0;
dfs(x, val);
return (viz[y] == 1);
}
int main()
{
f >> n >> m >> x >> y;
int dr=0;
for (int i=1; i<=m; ++i)
{
int a, b, c;
f >> a >> b >> c;
G[a].pb({b, c});
dr = max(dr, c);
}
int st=1;
int sol=0;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (verif(mij) == true)
{
sol = mij;
dr = mij - 1;
}
else st = mij + 1;
}
g << sol << '\n';
return 0;
}