#include #include "testlib.h" using namespace std; using ll = long long; const int T_MIN = 1, T_MAX = 1'000; const int N_MIN = 2, N_MAX = 1'000; const int M_MAX = 2'000; const int H_MIN = 1, H_MAX = 1'000'000'000; const int SUM_N_MAX = 100'000, SUM_M_MAX = 100'000; int main(int argc, char** argv) { registerValidation(argc, argv); int t = inf.readInt(T_MIN, T_MAX); inf.readEoln(); int sum_n = 0, sum_m = 0; for(int i = 0; i < t; i++) { int n = inf.readInt(N_MIN, N_MAX); inf.readSpace(); int m = inf.readInt(n, M_MAX); inf.readEoln(); vector h = inf.readInts(n, H_MIN, H_MAX); inf.readEoln(); vector> graph(n+1); set> edge; for(int i = 0; i < m; i++) { int u = inf.readInt(1, n+1); inf.readSpace(); int v = inf.readInt(u+1, n+1); inf.readEoln(); u--,v--; assert(edge.count({u,v}) == 0); edge.insert({u, v}); graph[u].push_back(v); graph[v].push_back(u); } vector saw(n+1, 0); saw[0] = 1; queue q; q.push(0); while(q.size()) { int nw = q.front(); q.pop(); for(auto to: graph[nw]) { if(saw[to] == 0) { saw[to] = 1; q.push(to); } } } for(auto x: saw) { assert(x != 0); } } inf.readEof(); assert(sum_n <= SUM_N_MAX); assert(sum_m <= SUM_M_MAX); }