Submission #1189845

#TimeUsernameProblemLanguageResultExecution timeMemory
1189845flukeEaster Eggs (info1cup17_eastereggs)C++20
0 / 100
10 ms1064 KiB
#include <bits/stdc++.h>
#include "grader.h"
#define emb emplace_back
#define em emplace

using namespace std;


void dfs(int node , vector <int> &temp , vector <vector <int>> &ask , vector <bool> &vis , vector <vector <int>> &adj){
    temp.emb(node);
    ask[temp.size()] = temp;
    
    for(int next_node : adj[node]){
        if(vis[next_node])continue;
        vis[next_node] = true;
        dfs(next_node,temp,ask,vis,adj);
    }
}


int findEgg (int N, vector < pair < int, int > > bridges)
{
    vector <vector <int>> adj(513);
    vector <vector <int> > ask(513);
    vector <int> temp;
    vector <bool> vis(513);

    for(auto [u,v] : bridges){
        adj[u].emb(v);
        adj[v].emb(u);
    }

    vis[1] = true;
    dfs(1,temp,ask,vis,adj);

    // for(int i=1;i<=N;i++){
    //     cout<<i<<" : " ;
    //     for(auto x : ask[i]){
    //         cout<<x<<" ";
    //     }
    //     cout<<"\n";
    // }

    int left = 1 , right = N;

    int ans = 1;
    while(left < right){
        
        int mid = (left+ right)/2;

        if(query(ask[mid])){
            ans = ask[mid].back();
            right = mid;
        }
        else left = mid + 1;
    }

    return ans;
} 

// int main(){
//     int n;
//     cin>>n;

//     vector <pair<int,int> > edge_list;
//     for(int i = 1 ; i<=n -1 ; i++){
//         int x,y;
//         cin>>x>>y;
//         edge_list.emb(x,y);
//     }

//     findEgg(n,edge_list);
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...