Pagini recente » Cod sursa (job #2067396) | Cod sursa (job #1242198) | Cod sursa (job #2625100) | Cod sursa (job #2613678) | Cod sursa (job #1631692)
#include <fstream>
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
int m, n, x, y, vf[200050], lst[200050], urm[200050], cost[200050], 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()
{
int a, b, c, p=0, u=1;
fin >> n >> m >> x >> y;
for (int i=1; i<=m; ++i)
{
fin >> 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;
}
fout << dist[y];
}