Cod sursa(job #1497716)

Utilizator DobosDobos Paul Dobos Data 7 octombrie 2015 10:47:40
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int MAX = 30005;
vector < int > G[MAX];
vector < int > G2[MAX];
bitset < MAX > trec;
deque < int > lx;
int D[MAX];
inline void dfs()
{
    int x;
    while(!lx.empty()){
        x = lx.front();
        lx.pop_front();
        for(int i = 0; i < G[x].size(); i ++){
            if(trec[G[x][i]] == 0){
                trec[G[x][i]] = 1;
                if(x < G[x][i])
                    D[G[x][i]] = D[x] + G2[x][i];
                else
                    D[G[x][i]] = D[x] - G2[x][i];
                lx.push_back(G[x][i]);
            }
        }
    }
}
int main()
{
    int n,m,s,f,x,y,d;
    fin >> n >> m >> s >> f;
    for(int i = 0 ; i < m; i ++){
        fin >> x >> y >> d;
        G[x].push_back(y);
        G2[x].push_back(d);
        G[y].push_back(x);
        G2[y].push_back(d);
    }
    lx.push_back(s);
    dfs();
    fout << max(-D[f],D[f]);

    return 0;
}