제출 #1324386

#제출 시각아이디문제언어결과실행 시간메모리
1324386QuocSenseiEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
8 ms476 KiB
#include <bits/stdc++.h> 

#define ll long long 
#define el cout << '\n'
#define ii pair<int, int>
#define fi first 
#define se second

using namespace std;

const int maxn = 512;

int euler[maxn + 10], timer = 0;
vector<int> adj[maxn + 10];

int query(vector<int> islands);
void dfs(int top, int par = -1)
{
    euler[++timer] = top;
    for (int next_top : adj[top])
    {
        if (next_top == par)
            continue;
        dfs(next_top, top);
    }
}
bool check(int m)
{
    vector<int> tree;
    for (int i = 1; i <= m; i++)
        tree.push_back(euler[i]);
    return query(tree);
}
int findEgg(int N, vector<ii> brigdes)
{
    timer = 0;
    for (int i = 1; i <= N; i++)
        adj[i].clear();
    for (ii pr : brigdes)
    {
        adj[pr.fi].push_back(pr.se);    
        adj[pr.se].push_back(pr.fi);
    }
    dfs(1);
    int l = 1, r = N;
    while (l < r)
    {
        int m = l + r >> 1;
        if (check(m))
            r = m;
        else
            l = m + 1;
    }
    return euler[l];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...