Cod sursa(job #1570408)

Utilizator daGramaGrama Matei daGrama Data 16 ianuarie 2016 15:09:34
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");

const int N= 30001, M= 100025;

int lst[N], vf[2*M], urm[2*M], nr;
int v[2*M],n,m, X,Y, c[N], D;


void adauga( int x, int y,int d)
{
    nr++;
    vf[nr]=y;
    urm[nr]=lst[x];
    v[nr]=d;
    lst[x]=nr;
}

void park(int p, int dist)
{
    if(p==Y)
      D=dist;
    else
    {
        if(!c[p])
        {
            c[p]=1;
            int i=lst[p];
            while(i!=0)
            {
              cout<<" p "<<p<<" i "<<i<<" y "<<vf[i];
                int y=vf[i];
                //c[y]++;
                if(y<p)
                    park(y,dist-v[i]);
                else
                    park(y,dist+v[i]);
                //c[y]--;
                i=urm[i];
            }
        }
    }
}


int main()
{
    int x,y,d;
    f>>n>>m>>X>>Y;
    for(int i=1; i<=m; i++)
    {
        f>>x>>y>>d;
        adauga(x,y,d);
        adauga(y,x,d);
    }
    park(X,0);
    g<<D;
}