Pagini recente » Cod sursa (job #684581) | Cod sursa (job #1286423) | Cod sursa (job #2688332) | Cod sursa (job #558581) | Cod sursa (job #330989)
Cod sursa(job #330989)
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
const int maxn=50003;
int t,n,dis[maxn],m,s,x,y,z,p,i,j,ok,ok2;
struct nod
{
int w;
int dis;
}
one;
vector<nod>a[maxn];
int main()
{
f>>t;
for(p=1;p<=t;++p)
{
f>>n>>m>>s;
for(i=1;i<=n;++i)
f>>dis[i];
for(i=1;i<=m;++i)
{
f>>x>>y>>z;
one.w=y;
one.dis=z;
a[x].push_back(one);
one.w=x;
a[y].push_back(one);
}
ok=1;
for(i=1;i<=n&&ok;++i)
if(i==s)
{
if(dis[i])
ok=0;
}
else
{
ok2=0;
for(vector<nod>::iterator it=a[i].begin();it!=a[i].end()&&ok;++it)
if(dis[it->w]+it->dis<dis[i])
ok=0;
else
if(dis[it->w]+it->dis==dis[i])
ok2=1;
if(!ok2)
ok=0;
}
if(ok)
g<<"DA\n";
else
g<<"NU\n";
}
f.close();
g.close();
return 0;
}