제출 #261716

#제출 시각아이디문제언어결과실행 시간메모리
261716lycColors (RMI18_colors)C++14
0 / 100
1757 ms5368 KiB
#include <bits/stdc++.h> using namespace std; #define TRACE(x) cerr << #x << " :: " << x << endl #define _ << " " << #define SZ(x) (int)(x).size() #define ALL(x) (x).begin(),(x).end() #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define RFOR(i,a,b) for (int i=(a);i>=(b);--i) const int mxN = 150005; const int inf = 2e5+5; int N, M, A[mxN], B[mxN]; vector<int> al[mxN]; bool reach[mxN]; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int TC; cin >> TC; while (TC--) { cin >> N >> M; FOR(i,1,N){ cin >> A[i]; } FOR(i,1,N){ cin >> B[i]; } FOR(i,1,N) al[i].clear(); FOR(i,1,M){ int U, V; cin >> U >> V; al[U].push_back(V); al[V].push_back(U); } bool ok = 1; FOR(s,1,N){ queue<int> q; memset(reach,0,sizeof reach); q.push(s), reach[s] = 1; while (!q.empty()) { int u = q.front(); q.pop(); for (int& v : al[u]) if (!reach[v] && A[v] >= B[s] && B[v] <= B[s]) { reach[v] = 1; q.push(v); } } bool cur = 0; FOR(v,1,N) if (reach[v] && A[v] == B[s]) { cur = 1; break; } ok &= cur; } cout << ok << '\n'; } }
#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...