Submission #1235275

#TimeUsernameProblemLanguageResultExecution timeMemory
1235275dssfsuper2Spring cleaning (CEOI20_cleaning)C++20
9 / 100
1096 ms6408 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> adj;
signed main(){
    int n, q;cin>>n>>q;
    bool isss1=true;
    adj.resize(n+1);
    for(int i = 0;i<n-1;i++){
        int a,b;cin>>a>>b;
        adj[a].push_back(b);
        adj[b].push_back(a);
        if(a!=1 && b!=1)isss1=false;
    }
    vector<int> values;
    if(isss1){
        vector<int> values;
        for(int i = 0;i<q;i++){
            int di;cin>>di;
            values.assign(n, 0);
            for(int i = 0;i<di;i++){
                int a;cin>>a;
                values[a]++;
            }
            int total=n-1;
            int ie=0;
            for(int i = 0;i<n;i++){
                if(values[i]>=2)ie++;
                total+=values[i]-(values[i]&1);
                values[i]=values[i]&1;
                if(values[i])total++;
            }
            if(n&1){
                cout << total << '\n';
            }
            else{
                if(ie){
                    cout << total+1 << '\n';
                }
                else{
                    cout << -1 << '\n';
                }
            }
        }
        return 0;
    }
    for(int i = 0;i<q;i++){
        values.assign(n, 0);
        int di;cin>>di;
        for(int i = 0;i<di;i++){
            int x;cin>>x;values[x-1]++;
        }
        int total=n-1;
        vector<int> ones;
        for(int i = 0;i<n;i++){
            total+=values[i]-(values[i]&1);
            values[i]=values[i]&1;
            if(values[i]&1)ones.push_back(i);
        }
        if((int)ones.size()%2==1){
            cout << -1 << '\n';
            continue;
        }
        for(int i =0;i<ones.size();i+=2){
            total+=ones[i+1]-ones[i]+2;
        }
        cout << total << '\n';
    }
}
#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...