Cod sursa(job #2010530)
Utilizator | Data | 13 august 2017 14:59:01 | |
---|---|---|---|
Problema | Distante | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.21 kb |
#include <bits/stdc++.h>
#define Nmax 50001
#define tip pair <int,int>
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
list <tip> G[Nmax];
int d[Nmax];
int main()
{
int n,m,T,i,j,k,s,c;
f>>T;
list <tip> :: iterator it;
bool ok;
bool ok1;
for(;T;T--)
{
f>>n>>m>>s;
ok1=true;
for(i=1;i<=n;i++)
{
f>>d[i];
G[i].clear();
}
if(d[s]) g<<"NU\n";
else
{
for(k=1;k<=n;k++)
{
f>>i>>j>>c;
G[i].push_back({j,c});
G[j].push_back({i,c});
}
for(i=1;i<=n;i++)
if(i!=s)
{
ok=false;
for(it=G[i].begin();it!=G[i].end();it++)
if(d[i]==d[it->first]+it->second)
{
ok=true;
it=G[i].end();
--it;
}
if(!ok) {g<<"NU"; i=n+1; ok1=false;}
}
if(ok1) g<<"DA\n";
}
}
return 0;
}