Pagini recente » Cod sursa (job #890648) | Cod sursa (job #883114) | Cod sursa (job #1729933) | Cod sursa (job #2286429) | Cod sursa (job #1576658)
#include <fstream>
#define limM 200050
using namespace std;
ifstream f ("sate.in");
ofstream g ("sate.out");
int m, n, x, y, vf[limM], lst[limM], urm[limM], cost[limM], nr, coada[30001], dist[30001];
bool viz[30001];
void adauga (int a, int b, int c)
{
++nr;
vf[nr]=b;
urm[nr] = lst[a];
cost[nr] = c;
lst[a]=nr;
}
int main()
{
f >> n >> m >> x >> y;
int a, b, c, p=0, u=1, lung=0;
bool ok=0;
for (int i=1; i<=m; ++i)
{
f >> a >> b >> c;
adauga (a, b, c);
adauga (b, a, c);
}
coada[0] = x;
dist[x] = 0;
while (p <= u)
{
int nod = coada[p];
int i = lst[nod];
while (i)
{
int j = vf[i];
if (!viz[j])
{
viz[j] = 1;
if (j > nod)
dist[j] = dist[nod] + cost[i];
else
dist[j] = dist[nod] - cost[i];
coada[++u]=j;
}
i = urm[i];
}
++p;
}
g << dist[y];
}