提出 #63534304
ソースコード 拡げる
#include <iostream>
#include <vector>
#include <cassert>
using namespace std;
const int B = 30;
struct Instruction {
int v; int should_flip;
Instruction(int v, int should_flip): v(v), should_flip(should_flip) {}
};
void solve() {
int n, m; cin >> n >> m;
vector<int> x(m), y(m), z(m);
for (int j = 0; j < m; j++) {
cin >> x[j] >> y[j] >> z[j];
x[j]--, y[j]--;
}
vector<int> solution(n);
for (int b = 0; b < B; b++) {
vector<vector<Instruction>> adj(n);
for (int j = 0; j < m; j++) {
int u = x[j];
int v = y[j];
bool should_flip = z[j] & (1 << b);
// cout << u << " " << v << " " << should_flip << endl;
adj[u].emplace_back(v, should_flip);
adj[v].emplace_back(u, should_flip);
}
// cout << endl;
vector<int> final_color(n, -1);
vector<bool> done(n, false);
auto do_color = [&adj, &done, &final_color](int u, int color, int& zero_count, vector<int>& encountered, auto do_color) -> bool {
if (done[u]) {
return final_color[u] == color;
}
done[u] = true;
final_color[u] = color;
if (color == 0) {
zero_count++;
}
encountered.push_back(u);
for (auto[v, should_flip]: adj[u]) {
if (!do_color(v, color ^ should_flip, zero_count, encountered, do_color)) {
return false;
}
}
return true;
};
for (int u = 0; u < n; u++) {
if (!done[u]) {
int zero_count = 0;
vector<int> encountered;
bool attempt = do_color(u, 0, zero_count, encountered, do_color);
if (!attempt) {
cout << -1 << endl;
return;
}
int one_count = encountered.size() - zero_count;
if (!(zero_count >= one_count)) {
for (int to_flip : encountered) {
final_color[to_flip] ^= 1;
}
}
}
}
for (int i = 0; i < n; i++) {
assert(final_color[i] != -1);
if (final_color[i] == 1) {
solution[i] += 1 << b;
}
}
}
for (int i = 0; i < n; i++) {
cout << solution[i] << (i == n-1 ? '\n' : ' ');
}
}
int main() {
solve();
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Min of Restricted Sum |
| ユーザ | Shisuko |
| 言語 | C++ 17 (gcc 12.2) |
| 得点 | 450 |
| コード長 | 2613 Byte |
| 結果 | AC |
| 実行時間 | 1487 ms |
| メモリ | 20664 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 450 / 450 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 01_handmade_07.txt, 01_handmade_08.txt, 01_handmade_09.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt, 02_random_22.txt, 02_random_23.txt, 02_random_24.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3548 KiB |
| 00_sample_01.txt | AC | 1 ms | 3544 KiB |
| 00_sample_02.txt | AC | 1 ms | 3556 KiB |
| 01_handmade_00.txt | AC | 1 ms | 3480 KiB |
| 01_handmade_01.txt | AC | 152 ms | 9444 KiB |
| 01_handmade_02.txt | AC | 1 ms | 3476 KiB |
| 01_handmade_03.txt | AC | 4 ms | 9524 KiB |
| 01_handmade_04.txt | AC | 1 ms | 3432 KiB |
| 01_handmade_05.txt | AC | 4 ms | 9500 KiB |
| 01_handmade_06.txt | AC | 152 ms | 9504 KiB |
| 01_handmade_07.txt | AC | 1186 ms | 16896 KiB |
| 01_handmade_08.txt | AC | 1194 ms | 16924 KiB |
| 01_handmade_09.txt | AC | 135 ms | 7108 KiB |
| 02_random_00.txt | AC | 637 ms | 13040 KiB |
| 02_random_01.txt | AC | 771 ms | 12856 KiB |
| 02_random_02.txt | AC | 1167 ms | 14724 KiB |
| 02_random_03.txt | AC | 1487 ms | 15584 KiB |
| 02_random_04.txt | AC | 260 ms | 9784 KiB |
| 02_random_05.txt | AC | 856 ms | 13604 KiB |
| 02_random_06.txt | AC | 816 ms | 14324 KiB |
| 02_random_07.txt | AC | 1437 ms | 15008 KiB |
| 02_random_08.txt | AC | 415 ms | 10364 KiB |
| 02_random_09.txt | AC | 453 ms | 11536 KiB |
| 02_random_10.txt | AC | 58 ms | 7140 KiB |
| 02_random_11.txt | AC | 543 ms | 11796 KiB |
| 02_random_12.txt | AC | 66 ms | 8176 KiB |
| 02_random_13.txt | AC | 84 ms | 14944 KiB |
| 02_random_14.txt | AC | 48 ms | 8344 KiB |
| 02_random_15.txt | AC | 99 ms | 13380 KiB |
| 02_random_16.txt | AC | 68 ms | 8632 KiB |
| 02_random_17.txt | AC | 93 ms | 14772 KiB |
| 02_random_18.txt | AC | 370 ms | 10252 KiB |
| 02_random_19.txt | AC | 1288 ms | 15384 KiB |
| 02_random_20.txt | AC | 100 ms | 6260 KiB |
| 02_random_21.txt | AC | 833 ms | 20664 KiB |
| 02_random_22.txt | AC | 359 ms | 8512 KiB |
| 02_random_23.txt | AC | 750 ms | 12172 KiB |
| 02_random_24.txt | AC | 121 ms | 7460 KiB |