Submission #1272648

#TimeUsernameProblemLanguageResultExecution timeMemory
1272648algoproclubColors (RMI18_colors)C++20
100 / 100
386 ms75328 KiB
// UUID: c7292c29-ec7c-4792-a4e2-0fdefce8d149 #include <bits/stdc++.h> using namespace std; bool ans = 1; vector<vector<pair<int, int> > > t; vector<vector<int> > va, vb; vector<int> p, s; vector<bool> go; void upd(int v, int l, int r, int tl, int tr, pair<int, int> val) { if(tl > tr) return; if(tl == l && tr == r) { t[v].push_back(val); return; } int m = (l + r) / 2; upd(v * 2, l, m, tl, min(tr, m), val); upd(v * 2 + 1, m + 1, r, max(tl, m + 1), tr, val); } vector<int> op; void rollback() { int x = op.back(); op.pop_back(); p[x] = 0; } int get(int v) { return p[v] == 0 ? v : get(p[v]); } void unio(int a, int b) { a = get(a); b = get(b); if(a != b) { if(s[a] < s[b]) swap(a, b); p[b] = a; s[a] += s[b]; } op.push_back(b); } void dfs(int v, int l, int r) { //cout << v << endl; for(auto [x, y] : t[v]) { //cout << x << " " << y << endl; unio(x, y); } if(l == r) { for(auto x : va[l]) { go[get(x)] = 1; } for(auto x : vb[l]) { if(!go[get(x)]) ans = 0; } for(auto x : va[l]) { go[get(x)] = 0; } for(auto x : t[v]) { rollback(); } return; } int m = (l + r) / 2; dfs(v * 2, l, m); dfs(v * 2 + 1, m + 1, r); for(auto x : t[v]) { rollback(); } } void solve() { ans = 1; int n, m; cin >> n >> m; t.assign(4 * n, {}); va.assign(n + 1, {}); vb.assign(n + 1, {}); p.assign(n + 1, 0); s.assign(n + 1, 1); go.assign(n + 1, 0); vector<int> a(n + 1), b(n + 1); for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= n; i++) cin >> b[i]; for(int i = 1; i <= n; i++) { va[a[i]].push_back(i); vb[b[i]].push_back(i); } for(int i = 0; i < m; i++) { int x, y; cin >> x >> y; upd(1, 1, n, max(b[x], b[y]), min(a[x], a[y]), {x, y}); } dfs(1, 1, n); cout << ans << "\n"; } int main() { ios::sync_with_stdio(0); cin.tie(0); int te; cin >> te; while(te--) solve(); }
#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...