제출 #1159402

#제출 시각아이디문제언어결과실행 시간메모리
1159402Kaztaev_AlisherSpring cleaning (CEOI20_cleaning)C++20
34 / 100
1096 ms22084 KiB
#include <bits/stdc++.h> #define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define all(a) a.begin() , a.end() #define F first #define S second using namespace std; using ll = long long; const ll N = 2e5+5 , inf = 2e9 + 7; const ll INF = 1e18 , mod = 1e9+7; ll a[N] , b[N] , sz[N]; vector<int> g[N]; int ans = 0; void go(int v , int p){ sz[v] = 0; for(int to : g[v]){ if(to != p){ go(to,v); sz[v] += sz[to]; } } while(sz[v] > 2){ sz[v] -= 2; } if(sz[v] == 2 && v != 1) ans++; if(g[v].size() == 1) sz[v] = 1; } void solve(){ int n , q; cin >> n >> q; for(int i = 1; i < n; i++){ cin >> a[i] >> b[i]; } while(q--){ int k; cin >> k; for(int i = 1; i <= n+k; i++) g[i].clear(); for(int i = 1; i < n; i++){ g[a[i]].push_back(b[i]); g[b[i]].push_back(a[i]); } for(int i = 1; i <= k; i++){ int a; cin >> a; g[a].push_back(i+n); g[i+n].push_back(a); } ll res = 0; for(int i = 1; i <= n+k; i++) res += (g[i].size() == 1); if(res % 2){ cout << "-1\n"; continue; } ans = 0; go(1,0); cout << ans+n+k-1 << "\n"; } } /* */ signed main(){ ios; 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...