#include"testlib.h" #include #include #include using ll = long long; const ll Nmin = 2; const ll Nmax = 100'000; const ll Mmin = 1; const ll Mmax = 100'000; const ll mod = 998244353; int main(){ registerValidation(); ll N = inf.readLong(Nmin, Nmax); inf.readSpace(); ll M = inf.readLong(Mmin, Mmax); inf.readEoln(); inf.ensuref(N-1 <= M && M <= N*(N-1)/2, "N-1 <= M <= N*(N-1)/2"); for (ll i = 0; i < N; i++){ if (i != 0){ inf.readSpace(); } ll Bi = inf.readLong(0LL, mod-1); } inf.readEoln(); std::set> es; atcoder::dsu d(N); for (ll i = 0; i < M; i++){ ll ui = inf.readLong(1LL, N); inf.readSpace(); ll vi = inf.readLong(1LL, N); inf.readEoln(); inf.ensuref(ui < vi, "u[i] < v[i]"); inf.ensuref(!es.contains({ui, vi}), "edges are distinct"); es.insert({ui, vi}); ui--, vi--; d.merge(ui, vi); } inf.ensuref((ll)(d.groups().size()) == 1LL, "graph is connected"); inf.readEof(); }