Pagini recente » Cod sursa (job #3273992) | Cod sursa (job #1519693) | Cod sursa (job #172301) | Cod sursa (job #1835121) | Cod sursa (job #319006)
Cod sursa(job #319006)
#include <cstdio>
#include <vector>
#define Nmax 100024
using namespace std;
vector <int> G[Nmax];
long Cost[30000][15000];
long long C;
int coada[Nmax],i,sum,N,M,prim,Y,X,ultim,viz[Nmax],drum[Nmax],poz;
int BFS(int x)
{ viz[x]=-1;
coada[0]=x;
while(prim<=ultim && !viz[Y])
{
x=coada[prim++];
for(i=0;i<G[x].size();i++)
if( !viz[G[x][i]] )
{
viz[G[x][i]]=x;
coada[++ultim]=G[x][i];
}
}
}
int main()
{int z,y;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d %d %d %d",&N,&M,&X,&Y);
while(M--)
{
scanf("%d %d",&z,&y);
G[z].push_back(y);
G[y].push_back(z);
scanf("%lld",&C);
Cost[z][y]=C;
Cost[y][z]=C;
}
BFS(X);
drum[0]=Y;poz=0;
while(viz[drum[poz]]!=-1)
drum[++poz]=viz[drum[poz-1]];
for(i=poz;i>=0;i--)
{if(drum[i]<drum[i+1]) sum-=Cost[drum[i]][drum[i+1]];
else sum+=Cost[drum[i]][drum[i+1]];
}
printf("%d",sum);
return 0;
}