Pagini recente » Cod sursa (job #1115446) | Cod sursa (job #10008) | Cod sursa (job #3243383) | Cod sursa (job #1132254) | Cod sursa (job #1037980)
#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++)
{
a=matrice[i][1]; b=matrice[i][2]; c=matrice[i][3];
if(distanta[a]>distanta[b]+c)
{
distanta[a]=distanta[b]+c;
ok=1;
}
}
}
while(ok!=0);
fprintf(fout,"%d\n",distanta[y]-distanta[x]);
fclose(fin);
fclose(fout);
return 0;
}