Pagini recente » Istoria paginii warm-up-2004/solutii | Pokemon2 | Monitorul de evaluare | Jocul NIM | Cod sursa (job #37040)
Cod sursa(job #37040)
#include<stdio.h>
#define inf 10000
int d[250001],n,m,i,x,y;
char viz[250001];
struct {int x,y,c;}a[500001];
int max(int x,int y){return x>y?x:y;}
void ver(int x,int y,int c)
{int m=max(d[x],c);
if(m<d[y]) {d[y]=m;viz[y]=0;}}
void dijkstra()
{for(i=1;i<=n;i++)
d[i]=inf;
d[x]=0;
int min,poz;
for(;;){
min=inf;
for(i=1;i<=n;i++)
if(!viz[i]&&d[i]<min) {min=d[i];poz=i;}
if(min==inf) break;
viz[poz]=1;
for(i=1;i<=m;i++)
if(a[i].x==poz)
{ver(poz,a[i].y,a[i].c);}
else if(a[i].y==poz){ver(poz,a[i].x,a[i].c);}
}
}
int main()
{freopen("pscnv.in","r",stdin);
freopen("pscnv.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].c);
dijkstra();
printf("%d",d[y]);
fclose(stdout);
return 0;}