Cod sursa(job #866266)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 27 ianuarie 2013 18:40:54
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>

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

struct node
{
    int nr;
    int dist;
    node *next;
} *v[30001]; int queue[30001],D[30001];
int m,n,x,y;

void build_graph ()
{
    int a,b,di;
    node *d;
    fin>>a>>b>>di;
    d=new node;
    d->nr=a;
    d->dist=di;
    d->next=v[b];
    v[b]=d;
    d=new node;
    d->nr=b;
    d->dist=di;
    d->next=v[a];
    v[a]=d;
}

void BFS ()
{
    int p,u; node *l;
    queue[1]=x;
    p=u=1; D[x]=1;
    while (p<=u)
    {
        l=v[queue[p]];
        while (l!=NULL)
        {
            if (!D[l->nr]) {queue[++u]=l->nr;
            if (l->nr>queue[p]) D[l->nr]=D[queue[p]]+l->dist;
            else D[l->nr]=D[queue[p]]-l->dist;
            if (l->nr==y) return;}
            l=l->next;
        }
        p++;
    }
}

int main()
{
    int i;
    fin>>n>>m>>x>>y;
    for (i=1;i<=m;i++)
    {
        build_graph ();
    }
    BFS ();
    fout<<D[y]-1;
}