#include <bits/stdc++.h>
int main() {
int N, P, Q;
std::cin >> N >> P >> Q;
std::vector<int> M(N);
std::vector<std::vector<int>> graph(N);
for (int i = 0; i < N; ++i) {
std::cin >> M[i];
graph[i].resize(M[i]);
for (int &e : graph[i]) {
std::cin >> e;
}
}
// check : input is valid ?
{
std::set<std::pair<int, int>> s;
for (int i = 0; i < N; ++i) {
for (const int e : graph[i]) {
const auto pair = std::minmax(i, e);
if (s.find(pair) == s.end()) {
s.insert(pair);
} else {
s.erase(pair);
}
}
}
if (not s.empty()) {
std::cout << "detention" << std::endl;
return 0;
}
}
std::vector<std::set<int>> group(N);
for (int c = 0; c < N; ++c) {
auto find = [&](auto &&self, std::set<int> set, std::multiset<int> que, const int r) -> void {
if ((int)set.size() > P) return;
if (r > Q) return;
if (que.empty()) {
if (set.empty()) {
return;
}
if (group[c].empty() or group[c].size() > set.size()) {
group[c] = set;
}
return;
}
const int from = *que.begin();
que.erase(que.begin());
self(self, set, que, r + 1);
if ((not group[c].empty()) and group[c].size() <= set.size()) {
return;
}
que.erase(from);
set.insert(from);
for (const int to : graph[from]) {
if (set.find(to) == set.end()) {
que.insert(to);
}
}
self(self, set, que, r);
};
find(find, {}, {c}, 0);
}
if (std::any_of(group.begin(), group.end(), [&](const auto &e) { return e.empty(); })) {
std::cout << "detention" << std::endl;
return 0;
}
std::vector<int> answer_index(N, -1);
for (int i = 0; i < N; ++i) {
for (const int e : group[i]) {
int &x = answer_index[e];
if (x == -1 or group[x].size() < group[i].size()) {
x = i;
}
}
}
std::set<int> answer;
for (const int e : answer_index) {
answer.insert(e);
}
std::cout << "home" << std::endl;
std::cout << answer.size() << std::endl;
for (const int i : answer) {
std::cout << group[i].size();
for (const int e : group[i]) {
std::cout << ' ' << e;
}
std::cout << std::endl;
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
58 ms |
352 KB |
Output is correct |
3 |
Correct |
6 ms |
332 KB |
Output is correct |
4 |
Correct |
19 ms |
340 KB |
Output is correct |
5 |
Correct |
35 ms |
380 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
33 ms |
392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
58 ms |
352 KB |
Output is correct |
3 |
Correct |
6 ms |
332 KB |
Output is correct |
4 |
Correct |
19 ms |
340 KB |
Output is correct |
5 |
Correct |
35 ms |
380 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
33 ms |
392 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
22 ms |
852 KB |
Output is correct |
11 |
Correct |
76 ms |
884 KB |
Output is correct |
12 |
Correct |
439 ms |
836 KB |
Output is correct |
13 |
Correct |
452 ms |
904 KB |
Output is correct |
14 |
Correct |
141 ms |
844 KB |
Output is correct |
15 |
Correct |
239 ms |
1004 KB |
Output is correct |
16 |
Correct |
3 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
212 KB |
Output is correct |
10 |
Correct |
58 ms |
352 KB |
Output is correct |
11 |
Correct |
6 ms |
332 KB |
Output is correct |
12 |
Correct |
19 ms |
340 KB |
Output is correct |
13 |
Correct |
35 ms |
380 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
1 ms |
212 KB |
Output is correct |
16 |
Correct |
33 ms |
392 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
22 ms |
852 KB |
Output is correct |
19 |
Correct |
76 ms |
884 KB |
Output is correct |
20 |
Correct |
439 ms |
836 KB |
Output is correct |
21 |
Correct |
452 ms |
904 KB |
Output is correct |
22 |
Correct |
141 ms |
844 KB |
Output is correct |
23 |
Correct |
239 ms |
1004 KB |
Output is correct |
24 |
Correct |
3 ms |
340 KB |
Output is correct |
25 |
Correct |
1 ms |
212 KB |
Output is correct |
26 |
Incorrect |
474 ms |
668 KB |
Output isn't correct |
27 |
Halted |
0 ms |
0 KB |
- |