Cod sursa(job #1576114)

Utilizator dalexandraDinca Alexandra-Maria dalexandra Data 22 ianuarie 2016 09:09:26
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");

const int N=30001;
const int M=100025;

int lst[N],vf[2*M],urm[2*M],c[2*M],q[N],nr;
int inter[N];
bool viz[N];

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

int main()
{
    int n,m,x,y,cost,i,X,Y;
    fin>>n>>m>>X>>Y;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>cost;
        adauga(x,y,cost);
        adauga(y,x,cost);
    }
    //BFS
    int p=0,u=1;
    q[++p]=X;
    viz[X]=1;
    while(p<=u)
    {
        x=q[p];
        i=lst[x];
        while(i!=0)
        {
            y=vf[i];
            if(!viz[y])
                {
                    q[++u]=y;
                    viz[y]=1;
                    if(x<y) inter[y]=inter[x]+c[i];
                    if(x>y) inter[y]=inter[x]-c[i];
                }
            i=urm[i];
        }
        p++;
    }
    fout<<inter[Y];
}