Submission #440505

# Submission time Handle Problem Language Result Execution time Memory
440505 2021-07-02T10:53:59 Z zxcvbnm Easter Eggs (info1cup17_eastereggs) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;
const int maxN = 515;
vector<int> kids[maxN];
vector<int> adj[maxN];
vector<int> sz(maxN);
vector<bool> in(maxN, true), vis(maxN, false);

void dfs(int v, int p) {
    vis[v] = true;
    for(int u : adj[v]) {
        if (vis[u] || !in[u]) continue;
        dfs(u, v);
        kids[v].push_back(u);
        sz[v] += sz[u];
    }
}

vector<int> find_kids(int v) {
    vector<int> ans;
    ans.push_back(v);

    for(int u : kids[v]) {
        vector<int> f = find_kids(u);
        for(int g : f) {
            ans.push_back(g);
        }
    }
    return ans;
}

int findEgg (int N, vector < pair < int, int > > bridges)
{
    fill(in.begin(), in.end(), true);
    for(int i = 1; i <= N; i++) {
        adj[i].clear();
    }

    for(auto i : bridges) {
        adj[i.first].push_back(i.second);
        adj[i.second].push_back(i.first);
    }
    int lg = ceil(log2(N));
    int cc = N;
    for(int i = 1; i <= lg; i++) {
        fill(sz.begin(), sz.end(), 1);
        fill(vis.begin(), vis.end(), false);

        for(int j = 1; j <= N; j++) {
            kids[j].clear();
        }
        for(int j = 1; j <= N; j++) {
            if (in[j]) {
                dfs(j, j);
                break;
            }
        }
        for(int j = 1; j <= N; j++) {
//            cerr << j << " " << sz[j] << "\n";
            if (sz[j] == cc / 2 && in[j]) {
                vector<int> f = find_kids(j);
//                for(int k : f) {
//                    cerr << k << " ";
//                }
//                cerr << "\n";
                int ok = query(f);
//                cerr << ok << "\n";
                if (ok == 0) {
                    for(int k : f) {
                        in[k] = false;
                    }
                } else {
                    fill(in.begin(), in.end(), false);
                    for(int k : f) {
                        in[k] = true;
                    }
                }
                break;
            }
        }
        cc = 0;
        for(int j = 1; j <= N; j++) {
            cc += in[j];
        }
//        for(int j = 1; j <= N; j++) {
//            cout << in[j] << " ";
//        }
//        cerr << cc << "\n\n";
    }
    int ans = -1;
    for(int i = 1; i <= N; i++) {
        if (in[i]) {
            ans = i;
        }
    }

//    assert(ans != -1);
    return ans;

Compilation message

eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:100:15: error: expected '}' at end of input
  100 |     return ans;
      |               ^
eastereggs.cpp:35:1: note: to match this '{'
   35 | {
      | ^