Pagini recente » Cod sursa (job #1706381) | Cod sursa (job #624378) | Cod sursa (job #356149) | Cod sursa (job #248118) | Cod sursa (job #68224)
Cod sursa(job #68224)
#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[x]=0;
l=1;
s[1]=x;
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;
}