Pagini recente » Cod sursa (job #45563) | Cod sursa (job #1026520) | Cod sursa (job #3221293) | Cod sursa (job #2222250) | Cod sursa (job #1045573)
#include <fstream>
#include <vector>
#include <queue>
#define Lg 15000000
#define verf ++poz==Lg? fin.read(Buffer, Lg), poz=0:0
using namespace std;
ifstream fin("pscnv.in");
int N,X,Y,sol[250005],poz;
bool viz[250005];
char Buffer[Lg];
struct Arc
{
int y,cost;
};
vector <Arc> L[250005];
queue <int> Q;
inline void Citeste(int &x)
{
for(; Buffer[poz]<'0' || Buffer[poz]>'9'; verf);
for(x=0; Buffer[poz]>='0' && Buffer[poz]<='9'; x=x*10+Buffer[poz]-'0', verf);
}
inline void Read()
{
Arc w;
int x,M,i;
Citeste(N); Citeste(M); Citeste(X); Citeste(Y);
for(i=1;i<=M;++i)
{
Citeste(x); Citeste(w.y); Citeste(w.cost);
L[x].push_back(w);
}
fin.close();
}
inline void Bfs(int start)
{
int nod,i,j,len,maxim;
viz[start]=true;
Q.push(start);
while(!Q.empty())
{
nod=Q.front(); Q.pop();
len=L[nod].size();
for(i=0;i<len;++i)
{
j=L[nod][i].y; maxim=max(sol[nod],L[nod][i].cost);
if(!viz[j] || sol[j]>maxim)
{
sol[j]=maxim;
viz[j]=true;
Q.push(j);
}
}
}
ofstream fout("pscnv.out");
fout<<sol[Y]<<"\n";
fout.close();
}
int main()
{
Read();
Bfs(X);
return 0;
}