Pagini recente » Cod sursa (job #2791348) | Cod sursa (job #2532652) | Cod sursa (job #349630) | Cod sursa (job #1535852) | Cod sursa (job #2400649)
#include<bits/stdc++.h>
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
vector < pair<int,int> > a[50005];
int m,n,s,h=1,t,x,y,c,d[50005],i,j;
string solve()
{
for(i=1;i<=n;i++)
{
if(i==s)
continue;
h=0;
for(j=0;j<a[i].size();j++)
{
if(d[a[i][j].first]>d[i]+a[i][j].second)
return "NU\n";
if(d[i]==d[a[i][j].first]+a[i][j].second)
h=1;
}
if(h==0)
return "NU\n";
}
return "DA\n";
}
int main()
{
f>>t;
while(t--)
{
f>>n>>m>>s;
for(i=1;i<=n;++i)
f>>d[i];
for(i=1;i<=m;++i)
{
f>>x>>y>>c;
a[x].push_back(make_pair(y,c));
a[y].push_back(make_pair(x,c));
}
if(d[s])
g<<"NU\n";
else
g<<solve();
for(i=1;i<=n;i++)
a[i].clear();
}
}