Pagini recente » Monitorul de evaluare | Cod sursa (job #712314) | Istoria paginii utilizator/cristina2798 | Cod sursa (job #2004471) | Cod sursa (job #2250843)
#include <iostream>
#include <fstream>
#include <vector>
#define dim 30001
using namespace std;
ifstream fin ("sate.in");
ofstream fout("sate.out");
vector <int> L[dim];
int x,y,n,m,v[dim],c[dim],nod,p,u,t[dim],i,num,q,r,valori[100025],aux,k,sum;
unsigned short cost[dim][dim];
void bfs (int a)
{
p=1;
u=1;
v[a]=1;
c[1]=a;
while(p<=u){
for(i=0;i<L[c[p]].size();i++)
{
nod=L[c[p]][i];
if(v[nod]==0)
{
v[nod]=1;
t[nod]=c[p];
u++;
c[u]=nod;
}
}
p++;
}
}
int main()
{
fin>>n>>m>>q>>r;
if(q>r)
{
aux=q;
q=r;
r=aux;
}
for(i=1;i<=m;i++)
{
fin>>x>>y>>num;
L[x].push_back(y);
L[y].push_back(x);
++k;
cost[x][y]=cost[y][x]=k;
valori[k]=num;
}
bfs(q);
sum=0;
nod=r;
while(t[nod]!=0)
{
if(t[nod]<nod)
sum+=valori[cost[t[nod]][nod]];
else
sum-=valori[cost[nod][t[nod]]];
nod=t[nod];
}
fout<<sum;
}