This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second
const int maxn = 120'000;
int n, m;
bool cmp(const pii &a, const pii &b) {
//
}
bool solve() {
cin >> n;
for(int i = 1; i <= n - 1; i++) {
int a, b;
cin >> a >> b;
// do nothing
}
cin >> m;
vector<pii > pairs_left, pairs_right;
vector<bool> start_right, end_right, start_left, end_left, spot;
start_right = end_right = start_left = end_left = spot = vector<bool> (1 + n, false);
for(int i = 1; i <= m; i++) {
int a, b;
cin >> a >> b;
if(a == b) {
spot[a] = true;
} else if(a < b) {
start_right[a] = end_right[b] = true;
pairs_right.pb(mp(a, b));
} else {
start_left[a] = end_left[b] = true;
pairs_left.pb(mp(a, b));
}
}
int cnt_left = 0, cnt_right = 0;
for(int i = 1; i <= n; i++) {
if(start_right[i]) {
cnt_right++;
}
if(end_right[i]) {
cnt_right--;
}
if(end_left[i]) {
cnt_left++;
}
if(start_left[i]) {
cnt_left--;
}
if(cnt_left > 0 && cnt_right > 0) {
return false;
}
if(spot[i] && (cnt_left > 0 || cnt_right > 0)) {
return false;
}
}
sort(pairs_left.begin(), pairs_left.end());
sort(pairs_right.begin(), pairs_right.end());
int prev = 0;
for(pii p : pairs_left) {
if(p.se <= prev) {
return false;
}
prev = p.se;
}
prev = 0;
for(pii p : pairs_right) {
if(p.se <= prev) {
return false;
}
prev = p.se;
}
return true;
}
void reset() {
//
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int T = 1;
cin >> T;
while(T--) {
cout << (solve() ? "Yes" : "No") << "\n";
reset();
}
}
Compilation message (stderr)
jail.cpp: In function 'bool cmp(const std::pair<int, int>&, const std::pair<int, int>&)':
jail.cpp:17:1: warning: no return statement in function returning non-void [-Wreturn-type]
17 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |