Submission #1165866

#TimeUsernameProblemLanguageResultExecution timeMemory
1165866AlgorithmWarriorEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
11 ms508 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

void dfs(int nod,int tata,int& sum,vector<int>&nodes,vector<vector<int>>&tree,vector<int>&sol){
    nodes.push_back(nod);
    sum-=sol[nod];
    for(auto fiu : tree[nod])
        if(fiu!=tata && sum)
            dfs(fiu,nod,sum,nodes,tree,sol);
}

int findEgg (int N, vector < pair < int, int > > bridges)
{
    vector<vector<int>>tree(N+5);
    for(auto [u,v] : bridges){
        tree[u].push_back(v);
        tree[v].push_back(u);
    }
    vector<int>sol(N+5,1);
    int cauta=N;
    int i;
    while(cauta>1){
        int sum=cauta/2;
        vector<int>nodes;
        dfs(1,0,sum,nodes,tree,sol);
        if(query(nodes)){
            for(auto nd : nodes)
                if(sol[nd]==1)
                    sol[nd]=2;
            for(i=1;i<=N;++i)
                if(sol[i]==1)
                    sol[i]=0;
            for(i=1;i<=N;++i)
                if(sol[i]==2)
                    sol[i]=1;
            cauta/=2;
        }
        else{
            for(auto nd : nodes)
                sol[nd]=0;
            cauta-=cauta/2;
        }
    }
    for(i=1;i<=N;++i)
        if(sol[i])
            return i;
}

Compilation message (stderr)

eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:49:1: warning: control reaches end of non-void function [-Wreturn-type]
   49 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...