Cod sursa(job #1400727)

Utilizator retrogradLucian Bicsi retrograd Data 25 martie 2015 13:37:32
Problema Sate Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.95 kb
#include<fstream>
#include<vector>
#include<stack>

using namespace std;
typedef int var;

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

#define MAXN 100002

struct Edge {
    var n, c;
    Edge(var a, var b) {
        n = a;
        c = b;
    }
};

var n;
var D[MAXN];
bool VIZ[MAXN];
vector<Edge> G[MAXN];
stack<var> ST;

void dfs(var node) {

    stack<var> ST;

    VIZ[node] = 1;
    ST.push(node);

    while(!ST.empty()) {
        var node = ST.top();
        ST.pop();
        for(auto e : G[node]) {
            if(!VIZ[e.n]) {
                VIZ[e.n] = 1;
                D[e.n] = D[node] + e.c;
                ST.push(e.n);
            }
        }
    }
}

int main() {

    var m, i, j, a, b, c;

    fin>>n>>m>>i>>j;

    while(m--) {
        fin>>a>>b>>c;
        G[a].push_back(Edge(b, c));
        G[b].push_back(Edge(a, -c));
    }

    dfs(i);
    fout<<D[j];

    return 0;
}