답안 #505056

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
505056 2022-01-10T12:46:15 Z duchung Speedrun (RMI21_speedrun) C++17
컴파일 오류
0 ms 0 KB
#include<bits/stdc++.h>

#include "speedrun.h"
using namespace std;

const int N = 1005;

int timer = 0;
vector<int> edge[N];
int parent[N] , tin[N] , Euler[N];

void dfs(int u)
{
	tin[u] = ++timer;
	Euler[timer] = u;
	for (int v : edge[u])
	{
		if (v == parent[u]) continue;
		parent[v] = u;
		dfs(v);
	}
}

void assignHints (int subtask , int n , int eu[] , int ev[])
{
	for (int i = 1 ; i < n ; ++i)
	{
		edge[eu[i]].push_back(ev[i]);
		edge[ev[i]].push_back(eu[i]);
	}
	dfs(1);

	setHintLen(20);

	for (int u = 1 ; u <= n ; ++u)
	{
		int v;

		if (u != 1)
		{
			v = parent[u];
			for (int j = 0 ; j < 10 ; ++j) setHint(u , j + 1 , v >> j & 1);
		}

		if (tin[u] == n) v = 1;
		else v = Euler[tin[u] + 1];
		for (int j = 0 ; j < 10 ; ++j) setHint(u , j + 11 , v >> j & 1);
	}
}

pair<int , int> Hint[N];
bool visited[N];

void get_val(int cur)
{
	for (int j = 0 ; j < 10 ; ++j) if (getHint(j + 1)) Hint[cur].first ^= 1 << j;
	for (int j = 10 ; j < 20 ; ++j) if (getHint(j + 1)) Hint[cur].second ^= 1 << (j - 10);
}

void speedrun(int subtask , int n , int cur)
{
	int l = getLength();

	int cnt = 1;
	while(cnt < n)
	{
		if (!visited[cur])
        {
            get_val(cur);
            visited[cur] = true;
        }

		cerr << current_node << " " << cur << " " << Hint[cur].first << " " << Hint[cur].second << "\n";

		if (tin[cur] == n)
		{
			while(cur != 1)
			{
				if (!visited[cur])
                {
                    get_val(cur);
                    visited[cur] = true;
                }

				goTo(Hint[cur].first);
				cur = Hint[cur].first;
			}
		}
		else
		{
			int tmp = Hint[cur].second;
			while (!goTo(tmp))
			{
				goTo(Hint[cur].first);
			}
			cur = tmp;
		}

		++cnt;
	}
}

Compilation message

speedrun.cpp: In function 'void speedrun(int, int, int)':
speedrun.cpp:73:11: error: 'current_node' was not declared in this scope
   73 |   cerr << current_node << " " << cur << " " << Hint[cur].first << " " << Hint[cur].second << "\n";
      |           ^~~~~~~~~~~~
speedrun.cpp:62:6: warning: unused variable 'l' [-Wunused-variable]
   62 |  int l = getLength();
      |      ^