Pagini recente » Cod sursa (job #1191977) | Cod sursa (job #3235715) | Cod sursa (job #2190121) | Cod sursa (job #246283) | Cod sursa (job #2680203)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <bitset>
using namespace std;
ifstream in ("pscnv.in");
ofstream out("pscnv.out");
const int nmax=25e4;
vector <pair<int, int> > muchii[nmax+2];
bitset <nmax+2> bt;
int n, m;
int x, y, z, ss, ff;
int coada[nmax+2];
bool check(int val){
int st=0, dr=1;
bt.reset();
bt.set(ss);
coada[++st]=ss;
while(st<=dr){
int elem=coada[st++];
for(auto &x:muchii[elem])
if(!bt.test(x.first))
if(x.second<=val){
coada[++dr]=x.first;
bt.set(x.first);
}
}
return bt.test(ff);
}
int main()
{
in>>n>>m>>ss>>ff;
for(int i=1; i<=m; i++){
in>>x>>y>>z;
muchii[x].push_back({y, z});
muchii[y].push_back({x, z});
}
int st=1, dr=1000, ans=-1;
while(st<=dr){
int mij=(st+dr)/2;
if(check(mij))
ans=mij, dr=mij-1;
else
st=mij+1;
}
out<<ans;
return 0;
}