Pagini recente » Cod sursa (job #2474613) | Cod sursa (job #2635634) | Cod sursa (job #836298) | Cod sursa (job #194819) | Cod sursa (job #1482927)
#include <cstdio>
#include <queue>
using namespace std;
vector < pair<int, int> > vf[30001], pond[30001];
int viz[30001], sum[30001];
int n, m, x,y;
void citeste()
{
freopen("sate.in", "r", stdin);
int a,b, pondere;
scanf("%d%d%d%d", &n, &m, &x, &y);
for(int i = 0; i < m; i++)
{
scanf("%d%d%d", &a, &b, &pondere);
vf[a].push_back(make_pair(b,pondere));
vf[b].push_back(make_pair(a,pondere));
}
}
void bf(int rad)
{
queue <int> coada;
coada.push(rad);
viz[rad] = 1;
int capat2 = 0, cost = 0;
while(!coada.empty() && capat2 != y)
{
rad = coada.front();
coada.pop();
for(auto it = vf[rad].begin(); it != vf[rad].end(); ++it)
{
capat2 = it->first;
cost = it->second;
if(!viz[capat2])
{
coada.push(capat2);
viz[capat2] = 1;
if(rad < capat2)
sum[capat2] = sum[rad] + cost;
else
sum[capat2] = sum[rad] - cost;
if(capat2 == y)
return;
}
}
}
}
int main()
{
citeste();
bf(x);
freopen("sate.out", "w", stdout);
printf("%d", sum[y]);
return 0;
}