답안 #1099664

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1099664 2024-10-12T01:27:31 Z tuannm Easter Eggs (info1cup17_eastereggs) C++17
0 / 100
1 ms 600 KB
#include<bits/stdc++.h>
#include "grader.h"
#define ii pair<int, int>
#define fi first
#define se second
#define pb push_back
using namespace std;
const int maxN = 520;

bool removed[maxN];
int sz[maxN], in[maxN], out[maxN], cnt;
vector<int> adj[maxN];

void DFS(int u = 1, int p = 0){
    in[u] = ++cnt;
    sz[u] = 1;

    for(int v : adj[u]){
        if(removed[v] || v == p)
            continue;

        DFS(v, u);
        sz[u] += sz[v];
    }

    out[u] = cnt;
}

int findEgg(int N, vector<ii> bridges){
    for(auto [u, v] : bridges)
        adj[u].pb(v), adj[v].pb(u);

    for(int Q = 1; Q <= 60; ++Q){
        cnt = 0;

        int root = 0;

        for(int i = 1; i <= N; ++i){
            if(removed[i])
                continue;

            root = i;
            break;
        }

        DFS(root);

        int zz = sz[root] / 2;
        int s = root;
        for(int i = 1; i <= N; ++i){
            if(removed[i])
                continue;

            if(abs(zz - sz[i]) < abs(zz - sz[s]))
                s = i;
        }

        vector<int> vec;

        for(int i = 1; i <= N; ++i){
            if(removed[i])
                continue;

            if(in[s] <= in[i] && in[i] <= out[s])
                vec.pb(i);
        }

        if(query(vec)){
            for(int i = 1; i <= N; ++i){
                if(removed[i])
                    continue;

                if(in[s] <= in[i] && in[i] <= out[s])
                    continue;

                removed[i] = true;
            }
        }
        else{
            for(int i : vec)
                removed[i] = true;
        }

        int cntRem = 0;

        for(int i = 1; i <= N; ++i)
            cntRem += !removed[i];

        if(cntRem == 1){
            for(int i = 1; i <= N; ++i)
                if(!removed[i])
                    return i;
        }
    }
    return -1;
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -