Cod sursa(job #1253087)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 31 octombrie 2014 19:54:10
Problema Sate Scor 80
Compilator cpp Status done
Runda preoji_cl11_12_lspvs Marime 1.07 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;

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])
            {
                if ((x>(*it).nod && X>(*it).nod && x<X) || (x<(*it).nod && X<(*it).nod && x>X))
                    c[(*it).nod]=c[x]+(*it).cost;
                else c[(*it).nod]=abs(c[x]-(*it).cost);
                DFS((*it).nod);
            }
}

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;
}