Cod sursa(job #1253100)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 31 octombrie 2014 20:08:29
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<bits/stdc++.h>
using namespace std;

struct cell
{
    int nod,cost;
};

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

const int NMAX=30005;

int n,m,X,Y,c[NMAX];
vector<cell>v[NMAX];
bitset<NMAX>viz;
int a,b;

inline void DFS(int x)
{
    viz[x]=1;
    for (vector<cell>::iterator it=v[x].begin();it!=v[x].end();it++)
        if (!viz[(*it).nod])
            {
                a=(*it).nod;
                b=(*it).cost;
                c[a]=abs(c[x]-b);
                if ((x>a && X>a && x<X) || (x<a && X<a && x>X))
                    c[a]=c[x]+b;
                DFS(a);
            }
}

int main()
{
    int i,x;
    cell k;
    fin>>n>>m>>X>>Y;
    for (i=1;i<=m;i++)
        {
           fin>>x>>k.nod>>k.cost;
           v[x].push_back(k);
           swap(x,k.nod);
           v[x].push_back(k);
        }
    viz[X]=1;
    for (vector<cell>::iterator it=v[X].begin();it!=v[X].end();it++)
        {
            c[(*it).nod]=(*it).cost;
            DFS((*it).nod);
        }
    fout<<c[Y]<<" ";
    return 0;
}