Cod sursa(job #1711775)

Utilizator danbuicaDan Buica danbuica Data 1 iunie 2016 10:16:02
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
#define MAX 200050
int m, n, x, y;
int vf[MAX], lst[MAX], urm[MAX], cost[MAX], nr, coada[30001], dist[30001];
bool viz[30001];

void adauga(int x, int y, int z)
{
    ++nr;
    vf[nr=y];
    urm[nr]=lst[x];
    cost[nr]=nr;
}
int main()

{
    int a,b,c,p=0,u=1;
    f>>n>>m>>x>>y;

    for(int i=1;i<=n;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];
}