Pagini recente » Cod sursa (job #2727613) | Cod sursa (job #803763) | Cod sursa (job #1204003) | Cod sursa (job #1580581) | Cod sursa (job #298659)
Cod sursa(job #298659)
#include <stdio.h>
#define N 250052
#define infinit 0x3f3f3f
using namespace std;
struct nod
{
int inf,K;
nod *next;
}*sir[N];
int Q[N*4];
char viz[N];
int D[N*4];
int n,m,s,d,inc,sf;
void add(int a,int b,int P)
{
nod *q=new nod;
q->inf=b;
q->K=P;
q->next=sir[a];
sir[a]=q;
}
void citire()
{
int x,y,k;
freopen ("pscnv.in","r",stdin);
freopen ("pscnv.out","w",stdout);
scanf ("%d %d %d %d",&n,&m,&s,&d);
for (int i=0;i<m;i++)
{
scanf ("%d %d %d",&x,&y,&k);
if (x!=y)
add(x,y,k);
}
}
inline int maxi(int a,int b)
{
return a>b?a:b;
}
void solve()
{
for (int i=1;i<=n;i++)
D[i]=infinit;
int dist,No,M;
Q[0]=s;
D[s]=0;
viz[s]=0;
inc=0;
sf=1;
while (inc<sf)
{
No=Q[inc++];
viz[No]=0;
dist=D[No];
for (nod *q=sir[No];q;q=q->next)
{
M=maxi(dist,q->K);
if (M<D[q->inf])
{
D[q->inf]=M;
if (!viz[q->inf])
{
viz[q->inf]=1;
Q[sf++]=q->inf;
}
}
}
}
printf("%d\n",D[d]);
}
int main ()
{
citire();
solve();
return 0;
}