제출 #1202657

#제출 시각아이디문제언어결과실행 시간메모리
1202657LIAAmusement Park (JOI17_amusement_park)C++20
0 / 100
17 ms2120 KiB
#include "Joi.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

static vector<vector<int>> g;
static vector<bool> seen;
static vector<int> order;

static void dfs0(int u) {
  seen[u] = true;
  order.push_back(u);
  for (int w : g[u]) {
	if (!seen[w]) dfs0(w);
  }
}

void Joi(int n, int m, int A[], int B[], long long X, int t) {
  g.assign(n, {});
  for (int i = 0; i < m; i++) {
	g[A[i]].push_back(B[i]);
	g[B[i]].push_back(A[i]);
  }
  for (int u = 0; u < n; u++) {
	sort(g[u].begin(), g[u].end());
  }

  seen.assign(n, false);
  order.clear();
  dfs0(0);

  for (int i = 0; i < n; i++) {
	int bit = (i < 60 ? int((X >> i) & 1LL) : 0);
	MessageBoard(order[i], bit);
  }
}
#include "Ioi.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

static vector<vector<int>> ad;
static vector<bool> vis1;
static vector<int> bits;

static void dfs1(int u) {
  vis1[u] = true;
  for (int w : ad[u]) {
	if (!vis1[w]) {
	  int bit = Move(w);
	  bits.push_back(bit);
	  dfs1(w);
	  Move(u);
	}
  }
}

long long Ioi(int n, int m, int A[], int B[], int p, int v, int t) {
  ad.assign(n, {});
  for (int i = 0; i < m; i++) {
	ad[A[i]].push_back(B[i]);
	ad[B[i]].push_back(A[i]);
  }
  for (int u = 0; u < n; u++) {
	sort(ad[u].begin(), ad[u].end());
  }

  vector<int> parent(n, -1);
  queue<int> q;
  parent[0] = 0;
  q.push(0);
  while (!q.empty()) {
	int u = q.front(); q.pop();
	for (int w : ad[u]) {
	  if (parent[w] == -1) {
		parent[w] = u;
		q.push(w);
	  }
	}
  }

  int cur = p;
  while (cur != 0) {
	int par = parent[cur];
	Move(par);
	cur = par;
  }

  bits.clear();
  bits.push_back(v);
  vis1.assign(n, false);
  dfs1(0);

  long long X = 0;
  for (int i = 0; i < 60 && i < (int)bits.size(); i++) {
	X |= ( (long long)bits[i] << i );
  }
  return X;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...