Submission #643141

#TimeUsernameProblemLanguageResultExecution timeMemory
643141SlavicGColors (RMI18_colors)C++17
47 / 100
3079 ms42312 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define sz(a) (int)a.size() #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define pb push_back #define forn(i, n) for(int i = 0; i < n; ++i) const int N = 1e5 + 10; vector<int> adj[N]; int a[N], b[N]; void solve() { int n, m; cin >> n >> m; forn(i, n) adj[i].clear(); for(int i = 0; i < n; ++i) cin >> a[i]; for(int i = 0; i < n; ++i) cin >> b[i]; for(int i = 0; i < m; ++i) { int u, v; cin >> u >> v; --u, --v; adj[u].pb(v); adj[v].pb(u); } vector<int> nodes[n + 1]; for(int i = 0; i < n; ++i) nodes[a[i]].pb(i); int j = n; while(true) { int u = -1; while(j > 0 && !sz(nodes[j])) --j; if(j >= 0 && sz(nodes[j])) { u = nodes[j].back(); nodes[j].pop_back(); } if(u == -1) break; for(int v: adj[u]) { if(a[v] != b[v] && a[v] > a[u]) { a[v] = a[u]; nodes[a[v]].pb(v); } } } forn(i, n) { if(a[i] != b[i]) { cout << "0\n"; return; } } cout << "1\n"; } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t; cin >> t; while(t--) { 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...