Pagini recente » Borderou de evaluare (job #1160998) | Borderou de evaluare (job #2668762) | Borderou de evaluare (job #3003662) | Borderou de evaluare (job #2668759) | Cod sursa (job #2010530)
#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;
}