Cod sursa(job #1473434)

Utilizator akaprosAna Kapros akapros Data 19 august 2015 13:38:33
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#define inf 1000000000
#define maxN 50002
using namespace std;
int n, N, m, s, nr, t, i, j, d[maxN];
bool used[maxN];

void read()
{
    int a, b, c;
    freopen("distante.in", "r", stdin);
    freopen("distante.out", "w", stdout);
    scanf("%d", &t);
    while (t --)
    {
        scanf("%d %d %d", &n, &m, &s);
        for (i = 1; i <= n; ++ i)
        {
            scanf("%d", &d[i]);
            used[i] = 0;
        }
        nr = 1;
        used[s] = 1;
        for (i = 1; i <= m; ++ i)
        {
            scanf("%d %d %d", &a, &b, &c);
            if (!used[b] && d[a] + c == d[b])
                used[b] = 1,
                          ++ nr;

            if (!used[a] && d[b] + c == d[a])
                used[a] = 1,
                          ++ nr;

            if (d[a] + c < d[b] || d[b] + c < d[a])
                d[s] = inf;

        }
        if (d[s] != 0 || nr != n)
            printf("NU\n");
        else
            printf("DA\n");
    }
}
int main()
{
    read();
    return 0;
}