Pagini recente » Cod sursa (job #2659027) | Cod sursa (job #2927214) | Cod sursa (job #570210) | Cod sursa (job #40126) | Cod sursa (job #530353)
Cod sursa(job #530353)
# include <fstream>
# include <vector>
# include <queue>
# define DIM 250003
using namespace std;
int n, m, S, D;
short int kmin=1<<10, v[DIM];
vector< pair<int,short int> > G[DIM];
queue<int>Q;
void read ()
{
ifstream fin ("pscnv.in");
fin>>n>>m>>S>>D;
int x, y, k;
for(int i=1;i<=m;++i)
{
fin>>x>>y>>k;
if (x!=y)
G[x].push_back(make_pair(y,k));
}
}
bool ok (int K)
{
while (Q.size())Q.pop();
Q.push(S);
int k;
v[S]=K;
while (Q.size())
{
k=Q.front();Q.pop();
for(unsigned i=0;i<G[k].size();++i)
if (v[G[k][i].first]!=K && G[k][i].second<=K)
{
if (G[k][i].first==D)
return true;
Q.push(G[k][i].first);
v[G[k][i].first]=K;
}
}
return false;
}
void find (int st, int dr)
{
if (st==dr)
{
if (st<kmin && ok (st))
kmin=st;
return;
}
int mij=(st+dr)/2;
if (ok(mij))
{
kmin=mij;
find(st, mij-1);
}
else
find (mij+1, dr);
}
int main ()
{
read ();
find (1, 1000);
ofstream fout ("pscnv.out");
fout<<kmin;
return 0;
}