Pagini recente » Cod sursa (job #558509) | Cod sursa (job #1148848) | Cod sursa (job #766664) | Cod sursa (job #1619769) | Cod sursa (job #1037990)
#include <stdio.h>
#define IN "sate.in"
#define OUT "sate.out"
#define NMAX 30001
#define MMAX 200050
int n,m;
int distanta[NMAX];
int matrice[MMAX][4];
int main()
{
FILE * fin=fopen(IN,"r");
FILE * fout=fopen(OUT,"w");
int x,y,i,a,b,c,ok;
fscanf(fin,"%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d%d",&a,&b,&c);
matrice[i][1]=a; matrice[i][2]=b; matrice[i][3]=-c;
matrice[m+i][1]=b; matrice[m+i][2]=a; matrice[m+i][3]=c;
}
do
{
ok=0;
for(i=1;i<=2*m;i++)
{
if(distanta[matrice[i][1]]>distanta[matrice[i][2]]+matrice[i][3])
{
distanta[matrice[i][1]]=distanta[matrice[i][2]]+matrice[i][3];
ok=1;
}
}
}
while(ok!=0);
fprintf(fout,"%d\n",distanta[y]-distanta[x]);
fclose(fin);
fclose(fout);
return 0;
}