Cod sursa(job #2831184)

Utilizator TDV24Tont Dragos-Valentin TDV24 Data 10 ianuarie 2022 21:55:07
Problema Distante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("distante.in");
ofstream g("distante.out");

int sursa[50001], destinatie[50001], costuri[50001], distante[50001];

/*
int test(int S, int M)
{
    if(distante[S]) // verific daca distanta de la nodul de inceput la el insusi este 0
        return -1;
    for(int i = 1; i <= M; i++)
        if(distante[sursa[i]] + costuri[i] < distante[destinatie[i]]) // verific daca exista un drum de o distanta mai mica fata de distanta data plimbandu-ma prin muchiile grafului
            return -1;
    return 1;
}
*/

int main()
{
    int T, N, M, S, rez;
    f >> T;
    for(int i = 1; i <= T; i++)
    {
        rez = 1;
        f >> N >> M >> S;
        for(int j = 1; j <= N; j++)
            f >> distante[j];
        for(int j = 1; j <= N; j++)
            f >> sursa[j] >> destinatie[j] >> costuri[j]; //citire
        if(distante[S]) // verific daca distanta de la nodul de inceput la el insusi este 0
            rez = -1;
        for(int i = 1; i <= M; i++)
            if(distante[sursa[i]] + costuri[i] < distante[destinatie[i]]) // verific daca exista un drum de o distanta mai mica fata de distanta data plimbandu-ma prin muchiile grafului
                rez = -1;
        if(rez == 1)
            g << "DA\n"; // distantele date sunt corecte
        else
            g << "NU\n"; // s-a gasit un drum de distanta mai mica fata de cea data
    }
    return 0;
}