답안 #765373

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
765373 2023-06-24T11:42:52 Z vjudge1 Speedrun (RMI21_speedrun) C++17
컴파일 오류
0 ms 0 KB
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <bitset>
#include <cmath>
#include <queue>
#include <map>
#include <set>
#include "speedrun.h"

// Akhmet Issa

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ent "\n"

const int maxn = 1e6 + 100;
const ll INF = (ll)2e18;
const int inf = (ll)2e9;
const int maxl = 20;
const int MOD = 1e9 + 7;

vector<int> g[maxn];
vector<int> ord;

void dfs(int v, int pr){
    ord.push_back(v);
    setHintLen(20);
    for(int to: g[v]){
        if(to != pr){
            for(int j = 0; j < 10; j++){
                if(v & (1<<j)) setHint(to, j + 11, 1);
            }
            dfs(to, v);
        }
    }
}

void assignHints(int subtask, int n, int A [], int B []){
    for(int i = 1; i < n; i++){
        g[A[i]].push_back(B[i]);
        g[B[i]].push_back(A[i]);
    }
    dfs(1, 0);
    for(int i = 0; i < n - 1; i++){
        for(int j = 0; j < 10; j++){
            if(ord[i+1] & (1<<j)) setHint(ord[i], j + 1, 1);
        }
    }
}

int get(int p){
    int ans = 0;
    for(int i = 0; i < 10; i++){
        if(getHint(p + i)) ans |= (1<<i);
    }
    return ans;
}

void dfs(int v, int to){
    if(!to) return;
    if(goTo(to)){
        int nxt = get(1);
        dfs(to, nxt);
    } else{
        int pr = get(11);
        dfs(pr, to);
    }
}

void speedrun(int subtask, int n, int start){
    while(start != 1){
        start = get(11);
        goTo(start);
    }
    dfs(1, get(1));
}

Compilation message

speedrun.cpp:62:6: error: redefinition of 'void dfs(int, int)'
   62 | void dfs(int v, int to){
      |      ^~~
speedrun.cpp:28:6: note: 'void dfs(int, int)' previously defined here
   28 | void dfs(int v, int pr){
      |      ^~~