Pagini recente » Cod sursa (job #2400470) | Cod sursa (job #478217) | Cod sursa (job #1475720) | Cod sursa (job #2026713) | Cod sursa (job #68223)
Cod sursa(job #68223)
#include <stdio.h>
#include <vector>
#include <stdlib.h>
using namespace std;
#define maxn 30010
#define pb push_back
int n,m,x,y,l;
vector <int> a[maxn],c[maxn];
int g[maxn],cost[maxn],s[maxn];
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
int i,px,py,pz,j;
scanf("%d %d %d %d ",&n,&m,&x,&y);
for (i=1;i<=m;i++)
{
scanf("%d %d %d ",&px,&py,&pz);
a[px].pb(py);
a[py].pb(px);
c[px].pb(pz);
c[py].pb(pz);
}
for (i=1;i<=n;i++) g[i]=a[i].size();
memset(cost,-1,sizeof(cost));
cost[1]=0;
l=1;
s[1]=1;
for (i=1;i<=l;i++)
for (j=0;j<g[s[i]];j++)
if (cost[a[s[i]][j]]==-1)
{
s[++l]=a[s[i]][j];
if (s[l]<s[i]) cost[s[l]]=cost[s[i]]-c[s[i]][j];
else cost[s[l]]=cost[s[i]]+c[s[i]][j];
}
printf("%d\n",cost[y]-cost[x]);
return 0;
}