Cod sursa(job #1045241)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 1 decembrie 2013 08:08:11
Problema Distante Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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;
				break;
			}
			uz[i]=false;
        }
		if (flag)
			fout<<"DA\n";
		else
			fout<<"NU\n";
    }
    fin.close();
    fout.close();
    return 0;
}