답안 #61546

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
61546 2018-07-26T07:27:07 Z Flying_dragon_02 Easter Eggs (info1cup17_eastereggs) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#include "grader.h"
using namespace std;

#define fi first
#define se second
#define pb push_back
#define mp make_pair

typedef pair<int, int> ii;

vector<int> graph[600];
int child[600], m, root, par[600], ok = 0;
bool vis1[600], vis2[600];
vector<int> ask;

void dfs(int u){
    vis1[u] = 1;
    child[u] = 1;
    for(int i = 0; i < graph[u].size(); i++){
        int v = graph[u][i];
        if(vis2[v] == 0 && vis1[v] == 0){
            dfs(v);
            par[v] = u;
            child[u] += child[v];
        }
    }
    if(child[u] == m / 2 && ok == 0){
        solve(u, par[u]);
        ok = 1;
    }
}

void solve(int u, int p){
    vis2[u] = 1;
    ask.pb(u);
    for(int i = 0; i < graph[u].size(); i++){
        int v = graph[u][i];
        if(v == p) continue;
        solve(v, u);
    }
}

int findEgg(int N, vector<ii> bridges){
    for(int i = 0; i < bridges.size(); i++){
        int u = bridges[i].fi, v = bridges[i].se;
        graph[u].pb(v); graph[v].pb(u);
    }
    int m = N;
    while(m != 1){
        ask.clear();
        ok = 0;
        for(int i = 1; i <= N; i++){
            if(vis2[i] == 0){
                memset(vis1, 0, sizeof(vis1));
                dfs(i);
                if(ask.size() > 0){
                    if(query(ask) == 0){
                        bool vis3[N];
                        for(int i = 0; i < ask.size(); i++){
                            vis3[i] = 1;
                            vis2[i] = 0;
                        }
                        for(int i = 1; i <= N; i++){
                            if(vis3[i] == 0 && vis2[i] == 0)
                                vis2[i] = 1;
                        }
                    }
                }
            }
        }
        m = m / 2;
    }
    ask.clear();
    for(int i = 1; i <= N; i++){
        if(vis2[i] == 0){
            ask.pb(i);
            query(ask);
            return 0;
        }
    }
}

Compilation message

eastereggs.cpp: In function 'void dfs(int)':
eastereggs.cpp:20:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < graph[u].size(); i++){
                    ~~^~~~~~~~~~~~~~~~~
eastereggs.cpp:29:9: error: 'solve' was not declared in this scope
         solve(u, par[u]);
         ^~~~~
eastereggs.cpp: In function 'void solve(int, int)':
eastereggs.cpp:37:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < graph[u].size(); i++){
                    ~~^~~~~~~~~~~~~~~~~
eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:45:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < bridges.size(); i++){
                    ~~^~~~~~~~~~~~~~~~
eastereggs.cpp:60:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                         for(int i = 0; i < ask.size(); i++){
                                        ~~^~~~~~~~~~~~
eastereggs.cpp:82:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^