제출 #481935

#제출 시각아이디문제언어결과실행 시간메모리
481935jesus_coconutAmusement Park (JOI17_amusement_park)C++17
18 / 100
33 ms4476 KiB
#include <bits/stdc++.h>
#include "Joi.h"

using namespace std;
using ll = long long;

void Joi(int N, int M, int A[], int B[], long long X, int T) {
  bool bio[N];
  memset(bio, 0, sizeof bio);
  int p = 0;
  vector<vector<int>> adj(N);
  for (int i = 0; i < M; ++i) {
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }
  for (auto &v: adj) sort(begin(v), end(v));
  function<void(int)> dfs = [&](int ver) {
    bio[ver] = true;
    MessageBoard(ver, (X >> p++) & 1);
    for (auto u: adj[ver]) if (!bio[u]) {
      dfs(u);
    }
  };
  dfs(0);
}
#include <bits/stdc++.h>
#include "Ioi.h"

using namespace std;

long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
  vector<vector<int>> adj(N);
  for (int i = 0; i < M; ++i) {
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }
  for (auto &v: adj) sort(begin(v), end(v));
  int col[N];
  col[P] = V;
  bool bio[N];
  memset(bio, 0, sizeof bio);
  function<void(int, int)> dfsfind = [&](int ver, int par) {
    bio[ver] = true;
    for (auto u: adj[ver]) if (!bio[u]) {
      col[u] = Move(u);
      dfsfind(u, ver);
    }
    if (par != -1) col[par] = Move(par);
  };
  dfsfind(P, -1);
  memset(bio, 0, sizeof bio);
  long long ans = 0;
  int p = 0;
  function<void(int)> dfs = [&](int ver) {
    bio[ver] = true;
    if (p > 63) return;
    ans ^= (1ll * col[ver]) << p++;
    for (auto u: adj[ver]) if (!bio[u]) {
      dfs(u);
    }
  };
  dfs(0);
  return ans;
}
#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...