Submission #124086

# Submission time Handle Problem Language Result Execution time Memory
124086 2019-07-02T13:48:52 Z wilwxk Amusement Park (JOI17_amusement_park) C++14
Compilation error
0 ms 0 KB
#include "Ioi.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int MAXN=2e5+5;
static vector<int> g[MAXN];
static short marc[MAXN], cor[MAXN];
static set<int> comp[MAXN];
static queue<int> qu;
static int n, m;
static ll mask, respf;

static bool predfs(int cur) {
	comp[0].insert(cur);
	marc[cur]=1; cor[cur]=comp[0].size()-1;
	bool ok=(comp[0].size()==60);
	for(auto viz : g[cur]) {
		if(marc[viz]) continue;
		if(ok) qu.push(viz);
		if(!ok) ok|=predfs(viz);
	}
	return ok;
}

static void dfs(int cur, ll &mask, int p) {
	comp[p].insert(cur);
	mask|=(1LL<<cor[cur]);
	if(comp[p].size()==59) return;
	for(auto viz : g[cur]) {
		if(cor[viz]<0) continue;
		if(mask&(1LL<<cor[viz])) continue;
		dfs(viz, mask, p);
		if(comp[p].size()==59) return;
	}
}

void responde(int cur, int p) {
	// printf("responde %d\n", cur);
	for(auto viz : g[cur]) {
		if(mask&(1LL<<cor[viz])) continue;
		if(comp[p].find(viz)==comp[p].end()) continue;
		if(Move(viz)) respf|=(1LL<<cor[viz]);
		mask|=(1LL<<cor[viz]);
		responde(viz, p);
		Move(cur);
	}
}

ll Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
	n=N; m=M; for(int i=0; i<m; i++) g[A[i]].push_back(B[i]), g[B[i]].push_back(A[i]);
	memset(cor, -1, sizeof(cor));
	predfs(0);
	for(int i=1; i<n; i++) if(marc[i]) comp[i]=comp[0];
	while(!qu.empty()) {
		int cur=qu.front(); qu.pop();
		for(auto viz : g[cur]) {
			ll mask=0;
			if(comp[cur].empty()&&cor[viz]>=0) {
				dfs(viz, mask, cur);
				comp[cur].insert(cur);
				mask^=(1LL<<60)-1;
				cor[cur]=__builtin_ctz(mask);
			}
			else if(comp[viz].empty()) qu.push(viz);
		}
	}

	if(V) respf|=(1LL<<cor[P]);
	mask=(1LL<<(cor[P]));
	responde(P, P);

	// printf("respf %lld\n", respf);
	return respf;
}
#include "Ioi.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int MAXN=2e5+5;
static vector<int> g[MAXN];
static short marc[MAXN], cor[MAXN];
static set<int> comp[MAXN];
static queue<int> qu;
static int n, m;
static ll mask, respf;

static bool predfs(int cur) {
	comp[0].insert(cur);
	marc[cur]=1; cor[cur]=comp[0].size()-1;
	bool ok=(comp[0].size()==60);
	for(auto viz : g[cur]) {
		if(marc[viz]) continue;
		if(ok) qu.push(viz);
		if(!ok) ok|=predfs(viz);
	}
	return ok;
}

static void dfs(int cur, ll &mask, int p) {
	comp[p].insert(cur);
	mask|=(1LL<<cor[cur]);
	if(comp[p].size()==59) return;
	for(auto viz : g[cur]) {
		if(cor[viz]<0) continue;
		if(mask&(1LL<<cor[viz])) continue;
		dfs(viz, mask, p);
		if(comp[p].size()==59) return;
	}
}

void responde(int cur) {
	// printf("responde %d\n", cur);
	for(auto viz : g[cur]) {
		if(mask&(1LL<<cor[viz])) continue;
		if(comp[cur].find(viz)==comp[cur].end()) continue;
		if(Move(viz)) respf|=(1LL<<cor[viz]);
		mask|=(1LL<<cor[viz]);
		responde(viz);
		Move(cur);
	}
}

ll Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
	n=N; m=M; for(int i=0; i<m; i++) g[A[i]].push_back(B[i]), g[B[i]].push_back(A[i]);
	memset(cor, -1, sizeof(cor));
	predfs(0);
	for(int i=1; i<n; i++) if(marc[i]) comp[i]=comp[0];
	while(!qu.empty()) {
		int cur=qu.front(); qu.pop();
		for(auto viz : g[cur]) {
			ll mask=0;
			if(comp[cur].empty()&&cor[viz]>=0) {
				dfs(viz, mask, cur);
				comp[cur].insert(cur);
				mask^=(1LL<<60)-1;
				cor[cur]=__builtin_ctz(mask);
			}
			else if(comp[viz].empty()) qu.push(viz);
		}
	}

	if(V) respf|=(1LL<<cor[P]);
	mask=(1LL<<(cor[P]));
	responde(P);

	// printf("respf %lld\n", respf);
	return respf;
}

Compilation message

Joi.cpp: In function 'void responde(int, int)':
Joi.cpp:43:6: error: 'Move' was not declared in this scope
   if(Move(viz)) respf|=(1LL<<cor[viz]);
      ^~~~
Joi.cpp:46:3: error: 'Move' was not declared in this scope
   Move(cur);
   ^~~~