Cod sursa(job #1841561)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 5 ianuarie 2017 19:08:24
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <cstdio>
#include <vector>
#define MAXN 30050
#define inf 0x3f3f3f3f

using namespace std;

struct vecin
{
    int y, c;
    vecin(int y = 0, int c = 0) : y(y), c(c) {}
};
int n, m, st, dr, sol, memo[MAXN];
vector<vecin> graf[MAXN];

void read()
{
    scanf("%d %d %d %d", &n, &m, &st, &dr);
    for (int i = 1; i <= m; i++) {
        int a, b, c;
        scanf("%d %d %d", &a, &b, &c);
        graf[a].push_back(vecin(b, c));
        graf[b].push_back(vecin(a, -c));
    }
    for (int i = 1; i <= n; i++)
        memo[i] = inf;
}

void dfs(int nod, int dist)
{
    if (memo[nod] != inf)
        return;
    memo[nod] = dist;
    for (vecin v : graf[nod])
        dfs(v.y, dist+v.c);
}

int main()
{
    freopen("sate.in", "r", stdin);
    freopen("sate.out", "w", stdout);

    read();
    dfs(st, 0);
    printf("%d", memo[dr]);

    return 0;
}