Submission #1113001

# Submission time Handle Problem Language Result Execution time Memory
1113001 2024-11-15T11:16:40 Z vjudge1 Spring cleaning (CEOI20_cleaning) C++17
9 / 100
31 ms 11600 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;
        assert(a == 1 || b == 1);
        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;
        }
    }
    dfs(root,root);
    for (int i=1;i<=n;i++) if (!chi[i]) leaf++;
    vi v;
    while (q--) {
        int k;
        cin >> k;
        int ans = 0;
        for (int j = 1;j<=k;j++) {
            int x;
            cin >> x;
            if (chi[x]) {
                v.push_back(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) {
            leaf--;
            int cur = x;
            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 Runtime error 9 ms 10064 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 13 ms 6608 KB Output is correct
2 Correct 9 ms 6352 KB Output is correct
3 Correct 22 ms 9672 KB Output is correct
4 Correct 27 ms 9156 KB Output is correct
5 Correct 31 ms 11068 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 10036 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 11 ms 10320 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 10 ms 11256 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 11 ms 11600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 9 ms 10064 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -