제출 #890820

#제출 시각아이디문제언어결과실행 시간메모리
890820vjudge1Jail (JOI22_jail)C++17
0 / 100
6 ms3164 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ff first #define ss second #define all(a) a.begin(), a.end() const int N = 120000; vector<int> g[N+1]; int n; /* struct Fenwick{ vector<int> fenw; int n; Fenwick(int sz){ n = sz; fenw.resize(n+5, 0); }; void add(int i, int x){ for(; i <= n; i+= i & -i){ fenw[i]+= x; } } int pref(int i){ int s = 0; for(; i > 0; i-= i & -i){ s+= fenw[i]; } return s; } int sum(int l, int r){ return pref(r) - pref(l-1); } }; */ void cl(){ for(int i = 1;i <= n; i++) g[i].clear(); } void solve(){ cin >> n; for(int i = 1;i < n; i++){ int a, b; cin >> a >> b; g[a].push_back(b); g[b].push_back(a); } int q; cin >> q; vector< pair<int, int> > query(q); vector<array<int, 4> > p; for(int i = 0;i < q; i++){ cin >> query[i].ff >> query[i].ss; if(query[i].ff > query[i].ss) swap(query[i].ff, query[i].ss); p.push_back({query[i].ff, query[i].ss, 0, i}); p.push_back({query[i].ss, query[i].ff, 1, i}); } sort(all(p), [&](auto A, auto B){ if(A[0] == B[0]){ if(A[1] == B[1]) return A[2] < B[2]; return A[1] > B[1]; } return A[0] < B[0]; }); multiset<int> st; for(auto [x, y, op, idx] : p){ if(!op){ if(st.empty() == false && *st.rbegin() >= query[idx].ss){ cout << "No"; return; } st.insert(query[idx].ss); }else{ st.erase(st.find(x)); } } cout << "Yes"; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--){ solve(); cl(); cout << '\n'; } return 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...