Cod sursa(job #2169232)

Utilizator RazorBestPricop Razvan Marius RazorBest Data 14 martie 2018 14:19:54
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <bitset>
using namespace std;

ifstream fin("distante.in");
ofstream fout("distante.out");

int dist[50001];
bitset<50001> b;

int main()
{
    int T, x, y, c, n, m, s;

    fin >> T;
    while (T--)
    {
        bool gresit = false;

        b.reset();

        fin >> n >> m >> s;
        for (int i = 1; i <= n; i++)
            fin >> dist[i];
        while (m--)
        {
            fin >> x >> y >> c;
            if (dist[x] + c < dist[y] || dist[y] + c < dist[x])
                gresit = false;
            else if (dist[x] + c == dist[y])
                b.set(y, 1);
            else if (dist[y] + c == dist[x])
                b.set(x, 1);
        }

        if (b.count() != n - 1 || dist[s] != 0)
            gresit = true;

        if (gresit)
            fout << "NU\n";
        else
            fout << "DA\n";
    }
}