제출 #940884

#제출 시각아이디문제언어결과실행 시간메모리
940884NK_Colors (RMI18_colors)C++17
0 / 100
152 ms8268 KiB
// Success consists of going from failure to failure without loss of enthusiasm #include <bits/stdc++.h> using namespace std; #define nl '\n' #define pb push_back #define sz(x) int(x.size()) template<class T> using V = vector<T>; using vi = V<int>; const int nax = 1e5+5; int e[nax]; set<int> have[nax]; void reset(int n) { for(int i = 0; i < n; i++) e[i] = -1, have[i] = {}; } int get(int x) { return e[x] < 0 ? x : e[x] = get(e[x]); } bool unite(int x, int y) { x = get(x), y = get(y); if (x == y) return 0; if (e[x] > e[y]) swap(x, y); e[x] += e[y]; if (sz(have[x]) < sz(have[y])) have[x].swap(have[y]); for(auto& c : have[y]) have[x].insert(c); e[y] = x; return 1; } int main() { cin.tie(0)->sync_with_stdio(0); int T; cin >> T; while(T--) { int N, M; cin >> N >> M; reset(N); vi A(N); for(auto& x : A) cin >> x; vi B(N); for(auto& x : B) cin >> x; V<vi> adj(N); for(int i = 0; i < M; i++) { int u, v; cin >> u >> v; --u, --v; adj[u].pb(v); adj[v].pb(u); } vi ord(N); iota(begin(ord), end(ord), 0); sort(begin(ord), end(ord), [&](int x, int y) { return B[x] < B[y]; }); bool pos = 1; for(int l = 0; l < N; l++) { int r = l; vi add; while(r < N && B[ord[l]] == B[ord[r]]) { add.pb(ord[r++]); } // cout << l << " <-> " << r << endl; for(auto& u : add) { // cout << "CON: " << u << endl; have[get(u)].insert(A[u]); for(auto& v : adj[u]) if (B[v] <= B[u]) unite(v, u); } for(auto& u : add) { // cout << "CHK: " << u << " => " << B[u] << endl; pos &= have[get(u)].count(B[u]); } l = r - 1; } cout << pos << nl; } exit(0-0); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...