Pagini recente » Monitorul de evaluare | Cod sursa (job #1141253) | Cod sursa (job #2185330) | Cod sursa (job #664551) | Cod sursa (job #319033)
Cod sursa(job #319033)
#include <cstdio>
#include <vector>
#define Nmax 100024
using namespace std;
vector <int> G[Nmax];
vector <long> Cost[Nmax];
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];
if(coada[ultim-1]<coada[ultim]) sum+=Cost[coada[ultim-1]][i];
else sum-=Cost[coada[ultim-1]][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].push_back(C);
Cost[y].push_back(C);
}
BFS(X);
printf("%d",sum);
return 0;
}