Pagini recente » Cod sursa (job #2065468) | Cod sursa (job #1517747) | Cod sursa (job #2761069) | Cod sursa (job #1751857) | Cod sursa (job #1027973)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define INF 500000000
#define MAXN 50005
using namespace std;
int main(){
int n,m,t,s,x,y,c;
vector<int> dTest(MAXN);
bitset<MAXN> okRang;
//freopen("distante.in","r",stdin);
//freopen("distante.out","w",stdout);
ifstream in("distante.in");
ofstream out("distante.out");
in>>t;
while(t--){
in>>n>>m>>s;
for(int i=1;i<=n;i++) {
in>>dTest[i];
okRang[i] = false;
}
bool ok = true;
for(int i=0;i<m;i++) {
in>>x>>y>>c;
if(dTest[x]+c<dTest[y])
ok = false;
if(dTest[y]+c<dTest[x])
ok=false;
if(dTest[x]+c==dTest[y])
okRang[y] = true;
if(dTest[y]+c==dTest[x])
okRang[x] = true;
}
okRang[s] = (dTest[s] == 0);
for(int i=1;i<=n;i++)
if(!okRang[i])
{ ok = false;break;}
if(ok) out<<"DA\n";
else out<<"NU\n";
}
return 0;
}