Cod sursa(job #1045247)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 1 decembrie 2013 08:28:48
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<vector>
using namespace std;

const int MAXN=50005;
ifstream fin("distante.in");
ofstream fout("distante.out");
int t,n,m,s;
int d[MAXN];
bool flag,uz[MAXN];

int main()
{
    int i,a,b,c;
    fin>>t;
    for (int k=1; k<=t; ++k)
    {
        flag=true;
        fin>>n>>m>>s;
        for (i=1; i<=n; ++i)
            fin>>d[i];
        for (i=1; i<=m; ++i)
        {
            fin>>a>>b>>c;
            if (d[a]+c==d[b])
                uz[b]=true;
            if (d[b]+c==d[a])
                uz[a]=true;
            if (d[b]+c<d[a] || d[a]+c<d[b])
                flag=false;
        }
        for (i=1; i<=n; ++i)
        {
            if (!uz[i] && i!=s)
            {
                flag=false;
            }
            uz[i]=false;
        }
        if (flag)
            fout<<"DA\n";
        else
            fout<<"NU\n";
    }
    fin.close();
    fout.close();
    return 0;
}