Cod sursa(job #1468010)

Utilizator paulhermanPaul Herman paulherman Data 5 august 2015 04:19:09
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

int points, relations, source, destination;
vector<pair<int, int>> adj_graph[30005];
int distances[30005];
queue<int> to_visit;

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

    scanf("%d %d %d %d", &points, &relations, &source, &destination);
        
    for (int i = 0; i < relations; i++) {
        int from, to, cost;
        scanf("%d %d %d", &from, &to, &cost);

        adj_graph[from].push_back(make_pair(to, cost));
        adj_graph[to].push_back(make_pair(from, -cost));
    }

    for (int i = 0; i <= points; i++)
        distances[i] = 20000005;
    to_visit.push(source);
    distances[source] = 0;

    while (distances[destination] == 20000005) {
        int current = to_visit.front();
        to_visit.pop();

        for (pair<int, int> next : adj_graph[current]) {
            if (distances[next.first] == 20000005) {
                distances[next.first] = distances[current] + next.second;
                to_visit.push(next.first);
            }
        }
    }

    printf("%d\n", distances[destination]);

    return 0;
}