Cod sursa(job #1576658)

Utilizator Vertex10Alexandru Pokharel Vertex10 Data 22 ianuarie 2016 18:25:51
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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];
}