제출 #1143873

#제출 시각아이디문제언어결과실행 시간메모리
1143873IrateEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
8 ms504 KiB
#include <bits/stdc++.h>
using namespace std;
const int mxN = 513;
vector<int>G[mxN], Euler;
void dfs(int node, int par){
    Euler.push_back(node);
    for(int &v : G[node]){
        if(v != par){
            dfs(v, node);
        }
    }
}
int query(vector<int>q);//{
//     cout << "? ";
//     for(int i : q){
//         cout << i << " ";
//     }
//     cout << endl;
//     int a;
//     cin >> a;
//     return a;
// }
int findEgg(int n, vector<pair<int, int>>bridges){
    for(int i = 0;i < (int)bridges.size();++i){
        int u = bridges[i].first, v = bridges[i].second;
        G[u].push_back(v);
        G[v].push_back(u);
    }
    dfs(1, 1);
    int l = 0, r = Euler.size() - 1;
    while(l < r){
        int mid = (l + r) / 2;
        vector<int>q;
        for(int i = 0;i <= mid;++i){
            q.push_back(Euler[i]);
        }
        if(query(q)){
            r = mid;
        }
        else{
            l = mid + 1;
        }
    }
    int res = Euler[r];
    Euler.clear();
    for(int i = 1;i <= n;++i){
        G[i].clear();
    }
    return res;
}
// int main(){
//     ios_base::sync_with_stdio(0);
//     cin.tie(0);
//     int n;
//     cin >> n;
//     vector<pair<int, int>>b;
//     for(int i = 0;i < n - 1;++i){
//         int u, v;
//         cin >> u >> v;
//         b.push_back({u, v});
//     }
//     cout << findEgg(n, b);
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...