Submission #1112992

# Submission time Handle Problem Language Result Execution time Memory
1112992 2024-11-15T11:02:12 Z vjudge1 Spring cleaning (CEOI20_cleaning) C++17
9 / 100
1000 ms 11196 KB
//Dost SEFEROĞLU
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " << 
#define vi vector<int>
#define all(xx) xx.begin(),xx.end()
#define ps(xxx) cout << (xxx) << endl;
const int N = 1e5+1,inf = 1e16,MOD = 1e9+7; 
 
vi edges[N],chi(N,0),sublf(N,0),par(N);


void dfs(int node,int p) {
    par[node] = p;
    for (auto it : edges[node]) {
        if (it == p) continue;
        chi[node]++;
        dfs(it,node);
        sublf[node]+=sublf[it];
    }
    if (!chi[node]) sublf[node] = 1;
}


void solve() { 
    int n,q;
    cin >> n >> q;
    vi deg(n+1,0);
    for (int i=1;i<=n-1;i++) {
        int a,b;
        cin >> a >> b;
        edges[a].push_back(b);
        edges[b].push_back(a);
        deg[a]++,deg[b]++;
    }
    int leaf = 0;
    int root = -1;
    for (int i=1;i<=n;i++) {
        if (deg[i] >= 2) {
            root = i;
            break;
        }
    }
    for (int i=1;i<=n;i++) if (deg[i] == 1) leaf++;
    dfs(root,root);
    vi v;
    while (q--) {
        int k;
        cin >> k;
        int ans = 0;
        for (int j = 1;j<=k;j++) {
            int x;
            cin >> x;
            v.push_back(x);
            if (chi[x]) {
                leaf++;
                int cur = x;
                while (cur != root) {
                    sublf[cur]++;
                    cur = par[cur];
                }
            }
            chi[x]++;
        }        
        for (int i=1;i<=n;i++) if (i != root) ans+=(sublf[i]%2==0);
        if (leaf%2) cout << -1 << '\n';
        else cout << n+k-1+ans << '\n';
        for (auto x : v) {
            int cur = x;
            if (chi[x]) {
                leaf--;
                while (cur != root) {
                    sublf[cur]--;
                    cur = par[cur];
                }
            }
            chi[x]--;
        }
        v.clear();
    }
}  
 
                
                            
signed main() { 
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #ifdef Dodi
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int t = 1;
    //cin >> t; 
    while (t --> 0) solve();
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4944 KB Output is correct
2 Incorrect 67 ms 6140 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 9 ms 6324 KB Output is correct
2 Correct 9 ms 6352 KB Output is correct
3 Correct 20 ms 9884 KB Output is correct
4 Correct 29 ms 9796 KB Output is correct
5 Correct 48 ms 11196 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1089 ms 6904 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1057 ms 6736 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1053 ms 8840 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1047 ms 9832 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4944 KB Output is correct
2 Incorrect 67 ms 6140 KB Output isn't correct
3 Halted 0 ms 0 KB -