Mai intai trebuie sa te autentifici.
Cod sursa(job #483049)
Utilizator | Data | 6 septembrie 2010 18:47:14 | |
---|---|---|---|
Problema | Distante | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <fstream>
#define nmax 50002
using namespace std;
ifstream in("distante.in");
ofstream out("distante.out");
bool corect,Drum[nmax] ;
int N,M,T,S,i,x,y,c;
int D[nmax];
inline void OK(int x,int y,int c)
{
if(D[x]+c <D[y]) corect = 0;
else
if(D[x]+c==D[y]) Drum[y]=1;
}
int main()
{
in>>T;
while(T--)
{
corect = 1 ;
in>>N>>M>>S;
for(i=1;i<=N;i++)in>>D[i],Drum[i]=0;
for(i=0;i<M;i++)
{
in>>x>>y>>c;
OK(x,y,c);
OK(y,x,c);
}
if(D[S])corect = 0;
Drum[S]=1;
for(i=1;i<=N;i++)if(!Drum[i])corect = 0;
if(corect)out<<"DA\n";
else out<<"NU\n";
}
return 0;
}