Cod sursa(job #1435273)

Utilizator EpictetStamatin Cristian Epictet Data 12 mai 2015 18:59:03
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <string>
#define DIM 8192
using namespace std;
ifstream fin ("distante.in");
ofstream fout ("distante.out");
int T, N, M, S, Dist[50010];
char P[DIM + 16], *now;
string Sol;

int Get();
void Verif();

int main()
{
    now = P;
    Verif();
    T = Get();
    while (T--)
    {
        Verif();
        N = Get(); M = Get(); S = Get();
        for (int i = 1; i <= N; i++) { Dist[i] = Get(); }

        if (Dist[S] == 0) Sol = "DA\n";
        for (int i = 1, x, y, c; i <= M; i++) {
            x = Get(); y = Get(); c = Get();
            if (Dist[x] + c < Dist[y] || Dist[y] + c < Dist[x]) { Sol = "NU\n"; }
        }

        fout << Sol;
    }

    return 0;
}

inline void Verif()
{
    if (*now == '\0')
    {
        fin.get(P, DIM, '\0');
        now = P;
    }
}

inline int Get()
{
    while (*now < '0' || *now > '9') {
        now++;
        Verif();
    }

    int number = 0;
    while (*now >= '0' && *now <= '9') {
        number = number * 10 + *now - '0';
        now++;
        Verif();
    }
    return number;
}