Submission #1145926

#TimeUsernameProblemLanguageResultExecution timeMemory
1145926SimonaIvanovaEaster Eggs (info1cup17_eastereggs)C++20
100 / 100
8 ms508 KiB
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <string>
#include <cstring>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include "grader.h"
#define endl '\n'
using namespace std;
int query(vector < int > islands);
vector <int> v1[600], v2;
int n;
int used[600];
void dfs(int beg)
{
    v2.push_back(beg);
    used[beg] = 1;
    for(int i = 0; i < v1[beg].size(); i++)
    {
        if(!used[v1[beg][i]])
            dfs(v1[beg][i]);
    }
}
void fill_v1(int N, vector <pair <int, int> > bridges)
{
    n = N;
    for(int i = 1; i <= n; i++)
    {
        v1[i].clear();
    }
    for(int i = 0; i < bridges.size(); i++)
    {
        v1[bridges[i].first].push_back(bridges[i].second);
        v1[bridges[i].second].push_back(bridges[i].first);
    }
}
bool check(int mid)
{
    vector <int> q;
    for(int i = 0; i <= mid; i++)
        q.push_back(v2[i]);
    return query(q);
}
int bin_search()
{
    int l = 0, r = v2.size()-1;
    while(l < r)
    {
        int mid = (l+r)/2;
        ///cout << mid << " " << l << " " << r << endl;
        if(check(mid) == 1)
            r = mid;
        else
            l = mid+1;
    }
    return v2[l];
}
int findEgg(int N, vector < pair < int, int > > bridges)
{
    fill_v1(N, bridges);
    memset(used, 0, sizeof(used));
    v2.clear();
    dfs(1);
    /*for(int i = 0; i < v2.size(); i++)
    {
        cout << v2[i] << " ";
    }
    cout << endl;*/
    return bin_search();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...