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 |
|
|
|
|
| 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 |