Cod sursa(job #1021794)
| Utilizator | Data | 4 noiembrie 2013 11:36:22 | |
|---|---|---|---|
| Problema | Distante | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <fstream>
#include <queue>
#define in "distante.in"
#define out"distante.out"
#define Max_Size 500009
std :: ifstream f(in);
std :: ofstream g(out);
int T, N, M, S;
int D[Max_Size];
int main()
{
int a, b, c;
f >> T;
while(T --)
{
bool ok = 1;
f >> N >> M >> S;
for(int i = 1; i <= N; ++i) f >> D[i];
for(int i = 1; i <= M && ok; ++i)
{
f >> a >> b >> c;
if(D[a] + c < D[b] || D[b] + c < D[a])
ok = 0;
}
if(D[S] || !ok) g << "NU\n";
else g << "DA\n";
}
g.close();
return 0;
}
