Pagini recente » Cod sursa (job #1665192) | Cod sursa (job #1175807) | Cod sursa (job #602789) | Rating Teodorescu Robert (robert210799) | Cod sursa (job #739699)
Cod sursa(job #739699)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
short n,m,x,y,mx,vl;
short ap[250100];
vector< pair<short,short> > A[250100];
queue<short> Q;
inline bool check(int val)
{
++vl;
for(;!Q.empty();Q.pop());
Q.push(x);
for(;!Q.empty();Q.pop())
{
int ret=Q.front();
for(vector< pair<int,int> >::iterator it=A[ret].begin();it!=A[ret].end();++it)
{
if(it->second<=val && ap[it->first]<vl)
{
Q.push(it->first);
ap[it->first]=vl;
if(it->first==y) return true;
}
}
}
return false;
}
inline int bs()
{
short i=mx,cnt=1<<9;
for(i=1000;cnt>0;cnt>>=1)
{
if(i-cnt>0)
{
if(check(i-cnt))
{
i-=cnt;
}
}
}
return i;
}
int main()
{
ifstream in("pscnv.in");
ofstream out("pscnv.out");
int x1,y1,c;
in>>n>>m>>x>>y;
for(int i=1;i<=m;++i)
{
in>>x1>>y1>>c;
if(mx<c)
{
mx=c;
}
A[x1].push_back(make_pair(y1,c));
A[y1].push_back(make_pair(x1,c));
}
out<<bs();
out<<'\n';
out.close();
return 0;
}