Submission #46498682


Source Code Expand

#include "conveyor.h"
#include <bits/stdc++.h>
#define pii pair<int, int>
#define mp make_pair 

using std::vector;
using std::pair;

const int N = 1e5 + 10;
int n, fa[N], to[N], dep[N];
int cnt[N], id[N];
vector<pii> G[N];
vector<int> T[3];

void dfs(int u) {
  T[dep[u] % 3].emplace_back(u);
  for(auto x : G[u]) {
    int v = x.first;
    if(v == fa[u]) continue;
    dep[v] = dep[u] + 1;
    id[v] = x.second, fa[v] = u;
    dfs(v);
  }
}

int count(int x) {
  int res = 0;
  for(int i : T[x])
    res += (cnt[i] > 0);
  return res;
}

vector<int> query(vector<int> vec) {
  static int vis[N];
  for(int i = 0; i < n; ++i)
    vis[i] = 0;
  for(int x : vec) vis[x] = 1;
  vector<int> E(n - 1, 0);
  for(int i = 0; i < n - 1; ++i)
    if(~to[i] && vis[to[i]]) E[i] = 1;
  vector<int> pos(n, 0);
  for(int i : vec) pos[i] = 1;
  return Query(E, vec);
}

void Solve(int _n, vector<int> A, vector<int> B) {
  n = _n;
  for(int i = 0; i < n - 1; ++i) {
    G[A[i]].emplace_back(pii{B[i], i});
    G[B[i]].emplace_back(pii{A[i], i});
    to[i] = -1, ++cnt[A[i]], ++cnt[B[i]];
  }

  auto set = [&](int x, int y) {
    --cnt[A[x]], --cnt[B[x]];
    to[x] = y;
  };

  dfs(1);
  while(true) {
    int t = 0;
    for(int i = 1; i <= 2; ++i)
      if(count(i) > count(t)) t = i;

    vector<int> pos;
    for(int i : T[t]) 
      if(cnt[i] > 0) pos.emplace_back(i);

    if(!pos.size()) {
      vector<int> ans(n - 1, 0);
      for(int i = 0; i < n - 1; ++i)
        if(B[i] != to[i]) ans[i] = 1;
      Answer(ans);
      return ;
    }

    vector<int> res = query(pos);
    static int vis[N];
    for(int x : pos) vis[x] = 0;

    for(int x : T[(t + 1) % 3]) 
      if(res[x]) set(id[x], x), vis[fa[x]] = 1;

    for(int x : pos) {
      if(res[x]) {
        for(auto i : G[x])
          if(to[i.second] != -1) set(i.second, x);
      } else if(!vis[x]) {
        set(id[x], fa[x]);
      }
    }
  }
}

Submission Info

Submission Time
Task D - ベルトコンベア (Belt Conveyor)
User DCH233
Language C++ 20 (gcc 12.2)
Score 0
Code Size 1992 Byte
Status WA
Exec Time 161 ms
Memory 23304 KiB

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4
Score / Max Score 0 / 1 0 / 14 0 / 10 0 / 75
Status
AC × 2
WA × 2
WA × 6
WA × 4
WA × 20
Set Name Test Cases
Subtask1 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt
Subtask2 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt
Subtask3 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt
Subtask4 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 04-13.txt, 04-14.txt, 04-15.txt, 04-16.txt
Case Name Status Exec Time Memory
01-01.txt AC 2 ms 3816 KiB
01-02.txt AC 2 ms 3640 KiB
01-03.txt WA 2 ms 3868 KiB
01-04.txt WA 2 ms 3756 KiB
02-01.txt WA 2 ms 3736 KiB
02-02.txt WA 2 ms 3820 KiB
02-03.txt WA 2 ms 3752 KiB
02-04.txt WA 2 ms 3772 KiB
02-05.txt WA 2 ms 3756 KiB
02-06.txt WA 2 ms 3816 KiB
03-01.txt WA 140 ms 23260 KiB
03-02.txt WA 144 ms 23196 KiB
03-03.txt WA 138 ms 23304 KiB
03-04.txt WA 139 ms 23172 KiB
04-01.txt WA 81 ms 17068 KiB
04-02.txt WA 79 ms 16976 KiB
04-03.txt WA 80 ms 16892 KiB
04-04.txt WA 79 ms 16868 KiB
04-05.txt WA 151 ms 16048 KiB
04-06.txt WA 152 ms 16060 KiB
04-07.txt WA 161 ms 19108 KiB
04-08.txt WA 82 ms 19236 KiB
04-09.txt WA 80 ms 16632 KiB
04-10.txt WA 157 ms 15872 KiB
04-11.txt WA 81 ms 16272 KiB
04-12.txt WA 87 ms 16300 KiB
04-13.txt WA 86 ms 16328 KiB
04-14.txt WA 70 ms 18672 KiB
04-15.txt WA 77 ms 18664 KiB
04-16.txt WA 149 ms 16984 KiB