Pagini recente » Cod sursa (job #1610778) | Cod sursa (job #1492395) | Cod sursa (job #2528936) | Cod sursa (job #1247036) | Cod sursa (job #363538)
Cod sursa(job #363538)
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
#define file_in "sate.in"
#define file_out "sate.out"
int n,m,i,X,Y,d[30100],a[101000],b[100100],c[101000],ok;
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d %d", &n, &m, &X, &Y);
memset(d,0,sizeof(d));
for (i=1;i<=m;++i)
{
scanf("%d %d %d\n", &a[i],&b[i],&c[i]);
if (a[i]==X)
d[b[i]]=c[i];
if (b[i]==X)
d[a[i]]=-c[i];
}
for (i=2;i<=n;++i)
if (d[i]==0)
d[i]=0x3f3f3f3f;
ok=0;
while(!ok)
{
ok=1;
for (i=1;i<=m;++i)
{
if (d[b[i]]>d[a[i]]+c[i])
d[b[i]]=d[a[i]]+c[i],
ok=0;
if (d[a[i]]>d[b[i]]-c[i])
d[a[i]]=d[b[i]]-c[i],
ok=0;
}
}
printf("%d", d[Y]);
fclose(stdin);
fclose(stdout);
return 0;
}