Cod sursa(job #37040)

Utilizator razvi9Jurca Razvan razvi9 Data 24 martie 2007 15:14:02
Problema PScNv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#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;}