Cod sursa(job #2152646)

Utilizator GandalfTheWhiteGandalf the White GandalfTheWhite Data 5 martie 2018 18:27:05
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>
#include <queue>
#include <vector>
#define N 30005
#define inf 300000000
using namespace std;

struct elem{
            int node, cost;
           };

vector <elem> G[N];
int n, st, fin, dist[N];

void Read()
{
    int m, x, y, d;
    elem e;

    freopen("sate.in", "r", stdin);
    scanf("%d%d%d%d", &n, &m, &st, &fin);

    for (int i = 1; i <= n; ++i)
        dist[i] = inf;

    dist[st] = 0;

    while (m--)
    {
        scanf("%d%d%d", &x, &y, &d);

        e.cost = d;
        e.node = y;
        G[x].push_back(e);

        e.cost = -d;
        e.node = x;
        G[y].push_back(e);
    }
}

inline void Dfs(int node)
{
    elem vec;
    int i;

    if (!dist[fin])

        for (i = 0; i < G[node].size(); ++i)
        {
            vec=G[node][i];

            if (dist[vec.node] == inf)
            {
                dist[vec.node] = dist[node] + vec.cost;
                Dfs(vec.node);
            }
        }
}

void Write()
{
    freopen("sate.out", "w", stdout);

    printf("%d", dist[fin]);
}

int main()
{
    Read();
    Dfs(st);
    Write();
    return 0;
}