Cod sursa(job #3227724)

Utilizator teodorobertTeodorescu Robert-Andrei teodorobert Data 2 mai 2024 15:03:32
Problema Distante Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

constexpr size_t max_nodes = 50000;

bool read_and_check_graph(std::istream& in) {
    int distances[max_nodes + 1];
    int nodes;
    int edges;
    int source;
    in >> nodes >> edges >> source;

    for (int node = 1; node <= nodes; node++)
        in >> distances[node];

    if (distances[source] != 0)
        return false;

    for (int edge = 1; edge <= edges; edge++) {
        int node1;
        int node2;
        int cost;
        in >> node1 >> node2 >> cost;

        if (distances[node1] > distances[node2] + cost)
            return false;

        if (distances[node2] > distances[node1] + cost)
            return false;
    }

    return true;
}

int main() {
    std::ifstream in { "distante.in" };
    std::ofstream out { "distante.out" };

    int graph_count;
    in >> graph_count;

    for (int graph = 0; graph < graph_count; graph++) {
        if (read_and_check_graph(in)) {
            out << "DA\n";
        } else {
            out << "NU\n";
        }
    }
}