Cod sursa(job #1043404)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 28 noiembrie 2013 15:30:52
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

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

int v[50005],N;
bool sol[50005];

inline void Afisare()
{
    int i,ok=1;
    for(i=1;i<=N;++i)
        if(!sol[i])
            ok=0;

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

inline void Solve()
{
    int M,start,i,x,y,cost;
    fin>>N>>M>>start;
    for(i=1;i<=N;++i)
    {
        fin>>v[i];
        sol[i]=false;
    }
    for(i=1;i<=M;++i)
    {
        fin>>x>>y>>cost;
        if(v[y]==v[x]+cost)
            sol[y]=true;
        if(v[x]==v[y]+cost)
            sol[x]=true;
    }
    if(v[start]==0)
        sol[start]=true;
    Afisare();
}

int main()
{
    int T;
    fin>>T;
    while(T--)
        Solve();

    fin.close();
    fout.close();
    return 0;
}