Cod sursa(job #1467997)

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

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

    int points, relations, source, destination;
    cin >> points >> relations >> source >> destination;
    points++;

    vector<vector<pair<int, int>>> adj_graph(points);
    vector<int> distances(points);
    
    for (int i = 0; i < relations; i++) {
        int from, to, cost;
        cin >> from >> to >> cost;

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

    queue<int> to_visit;
    vector<bool> visited(points);
    to_visit.push(source);
    visited[source] = true;
    distances[source] = 0;

    while (!to_visit.empty() && !visited[destination]) {
        int current = to_visit.front();
        to_visit.pop();

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

    cout << distances[destination] << endl;

    return 0;
}