提出 #28779195
ソースコード 拡げる
#include <immintrin.h>
#include <algorithm>
#include <bitset>
#include <cstring>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
#define rep(i, n) for (int i = 0; i < n; i++)
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
using bs = bitset<128>;
constexpr int MAX = 30;
int N, T, L;
int u[10000], v[10000];
bs a[MAX][100];
bs at[MAX][100];
// t 番目の (i, j) を更新
void dfs(int t, int i, int j) {
// cerr<<"dfs:"<<t<<" "<<i<<" "<<j<<endl;
if (a[t][i].test(j)) return;
a[t][i].set(j), at[t][j].set(i);
if (t == MAX - 1) return;
bs s1 = a[t][j] & ~a[t + 1][i];
for (int k = s1._Find_first(); k < N; k = s1._Find_next(k)) {
dfs(t + 1, i, k);
}
bs s2 = at[t][i] & ~at[t + 1][j];
for (int h = s2._Find_first(); h < N; h = s2._Find_next(h)) {
dfs(t + 1, h, j);
}
}
bs v1, v2;
// v1 に答えを set
void get() {
v1.reset();
v1.set(0);
for (int b = 0; b < MAX; b += 2) {
if (L & (1 << b)) {
rep(i, N) v2[i] = (at[b + 0][i] & v1).count() > 0;
} else {
v2 = v1;
}
if (L & (1 << (b + 1))) {
rep(i, N) v1[i] = (at[b + 1][i] & v2).count() > 0;
} else {
v1 = v2;
}
}
}
int ng[100], ok[100];
int main() {
cin >> N >> T >> L;
rep(i, T) {
cin >> u[i] >> v[i];
--u[i], --v[i];
}
rep(i, N) ng[i] = -1, ok[i] = T;
while (true) {
vector<pair<int, int>> qs;
rep(i, N) {
if (ng[i] + 1 < ok[i]) {
int med = (ng[i] + ok[i]) / 2;
qs.emplace_back(med, i);
}
}
if (qs.empty()) break;
sort(begin(qs), end(qs));
reverse(begin(qs), end(qs));
memset(a, 0, sizeof(a));
memset(at, 0, sizeof(a));
rep(t, T) {
if (qs.empty()) break;
dfs(0, u[t], v[t]);
if (qs.back().first == t) {
get();
while (qs.size() and qs.back().first == t) {
int j = qs.back().second;
qs.pop_back();
if (v1.test(j)) {
ok[j] = t;
} else {
ng[j] = t;
}
}
}
}
}
rep(i, N) {
int x = ok[i] == T ? -1 : ok[i] + 1;
cout << x << " \n"[i == N - 1];
}
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | G - Good Vertices |
| ユーザ | Nyaan |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 600 |
| コード長 | 2265 Byte |
| 結果 | AC |
| 実行時間 | 69 ms |
| メモリ | 3768 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 600 / 600 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example0.txt, example1.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, 050.txt, 051.txt, 052.txt, 053.txt, 054.txt, 055.txt, 056.txt, 057.txt, 058.txt, 059.txt, 060.txt, 061.txt, 062.txt, 063.txt, 064.txt, 065.txt, 066.txt, 067.txt, 068.txt, 069.txt, 070.txt, 071.txt, 072.txt, 073.txt, 074.txt, 075.txt, 076.txt, 077.txt, 078.txt, 079.txt, 080.txt, 081.txt, 082.txt, 083.txt, 084.txt, 085.txt, 086.txt, 087.txt, 088.txt, 089.txt, 090.txt, 091.txt, 092.txt, 093.txt, 094.txt, 095.txt, 096.txt, 097.txt, 098.txt, 099.txt, 100.txt, 101.txt, 102.txt, 103.txt, 104.txt, 105.txt, 106.txt, 107.txt, example0.txt, example1.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 000.txt | AC | 7 ms | 3688 KiB |
| 001.txt | AC | 62 ms | 3576 KiB |
| 002.txt | AC | 2 ms | 3564 KiB |
| 003.txt | AC | 1 ms | 3580 KiB |
| 004.txt | AC | 69 ms | 3672 KiB |
| 005.txt | AC | 62 ms | 3548 KiB |
| 006.txt | AC | 64 ms | 3728 KiB |
| 007.txt | AC | 64 ms | 3576 KiB |
| 008.txt | AC | 2 ms | 3548 KiB |
| 009.txt | AC | 2 ms | 3692 KiB |
| 010.txt | AC | 4 ms | 3608 KiB |
| 011.txt | AC | 3 ms | 3652 KiB |
| 012.txt | AC | 2 ms | 3544 KiB |
| 013.txt | AC | 2 ms | 3600 KiB |
| 014.txt | AC | 3 ms | 3604 KiB |
| 015.txt | AC | 2 ms | 3560 KiB |
| 016.txt | AC | 2 ms | 3476 KiB |
| 017.txt | AC | 2 ms | 3488 KiB |
| 018.txt | AC | 7 ms | 3484 KiB |
| 019.txt | AC | 2 ms | 3580 KiB |
| 020.txt | AC | 3 ms | 3504 KiB |
| 021.txt | AC | 2 ms | 3656 KiB |
| 022.txt | AC | 2 ms | 3656 KiB |
| 023.txt | AC | 2 ms | 3564 KiB |
| 024.txt | AC | 2 ms | 3656 KiB |
| 025.txt | AC | 2 ms | 3548 KiB |
| 026.txt | AC | 2 ms | 3608 KiB |
| 027.txt | AC | 2 ms | 3488 KiB |
| 028.txt | AC | 5 ms | 3476 KiB |
| 029.txt | AC | 2 ms | 3472 KiB |
| 030.txt | AC | 3 ms | 3652 KiB |
| 031.txt | AC | 4 ms | 3576 KiB |
| 032.txt | AC | 2 ms | 3656 KiB |
| 033.txt | AC | 2 ms | 3504 KiB |
| 034.txt | AC | 2 ms | 3692 KiB |
| 035.txt | AC | 2 ms | 3564 KiB |
| 036.txt | AC | 2 ms | 3608 KiB |
| 037.txt | AC | 2 ms | 3544 KiB |
| 038.txt | AC | 7 ms | 3656 KiB |
| 039.txt | AC | 2 ms | 3560 KiB |
| 040.txt | AC | 2 ms | 3672 KiB |
| 041.txt | AC | 16 ms | 3648 KiB |
| 042.txt | AC | 12 ms | 3696 KiB |
| 043.txt | AC | 16 ms | 3544 KiB |
| 044.txt | AC | 14 ms | 3648 KiB |
| 045.txt | AC | 15 ms | 3736 KiB |
| 046.txt | AC | 10 ms | 3596 KiB |
| 047.txt | AC | 4 ms | 3584 KiB |
| 048.txt | AC | 3 ms | 3656 KiB |
| 049.txt | AC | 3 ms | 3604 KiB |
| 050.txt | AC | 4 ms | 3576 KiB |
| 051.txt | AC | 2 ms | 3544 KiB |
| 052.txt | AC | 3 ms | 3608 KiB |
| 053.txt | AC | 2 ms | 3656 KiB |
| 054.txt | AC | 2 ms | 3608 KiB |
| 055.txt | AC | 6 ms | 3556 KiB |
| 056.txt | AC | 3 ms | 3476 KiB |
| 057.txt | AC | 4 ms | 3660 KiB |
| 058.txt | AC | 5 ms | 3652 KiB |
| 059.txt | AC | 3 ms | 3656 KiB |
| 060.txt | AC | 43 ms | 3696 KiB |
| 061.txt | AC | 38 ms | 3696 KiB |
| 062.txt | AC | 39 ms | 3604 KiB |
| 063.txt | AC | 66 ms | 3680 KiB |
| 064.txt | AC | 4 ms | 3488 KiB |
| 065.txt | AC | 24 ms | 3664 KiB |
| 066.txt | AC | 9 ms | 3592 KiB |
| 067.txt | AC | 20 ms | 3580 KiB |
| 068.txt | AC | 2 ms | 3576 KiB |
| 069.txt | AC | 2 ms | 3544 KiB |
| 070.txt | AC | 18 ms | 3708 KiB |
| 071.txt | AC | 28 ms | 3600 KiB |
| 072.txt | AC | 44 ms | 3672 KiB |
| 073.txt | AC | 20 ms | 3664 KiB |
| 074.txt | AC | 3 ms | 3652 KiB |
| 075.txt | AC | 15 ms | 3608 KiB |
| 076.txt | AC | 42 ms | 3724 KiB |
| 077.txt | AC | 55 ms | 3652 KiB |
| 078.txt | AC | 61 ms | 3576 KiB |
| 079.txt | AC | 62 ms | 3632 KiB |
| 080.txt | AC | 63 ms | 3548 KiB |
| 081.txt | AC | 58 ms | 3684 KiB |
| 082.txt | AC | 60 ms | 3576 KiB |
| 083.txt | AC | 62 ms | 3728 KiB |
| 084.txt | AC | 59 ms | 3652 KiB |
| 085.txt | AC | 62 ms | 3620 KiB |
| 086.txt | AC | 63 ms | 3768 KiB |
| 087.txt | AC | 56 ms | 3652 KiB |
| 088.txt | AC | 49 ms | 3712 KiB |
| 089.txt | AC | 59 ms | 3648 KiB |
| 090.txt | AC | 52 ms | 3684 KiB |
| 091.txt | AC | 52 ms | 3720 KiB |
| 092.txt | AC | 58 ms | 3700 KiB |
| 093.txt | AC | 44 ms | 3552 KiB |
| 094.txt | AC | 51 ms | 3724 KiB |
| 095.txt | AC | 58 ms | 3660 KiB |
| 096.txt | AC | 51 ms | 3684 KiB |
| 097.txt | AC | 51 ms | 3624 KiB |
| 098.txt | AC | 58 ms | 3648 KiB |
| 099.txt | AC | 58 ms | 3596 KiB |
| 100.txt | AC | 59 ms | 3712 KiB |
| 101.txt | AC | 46 ms | 3512 KiB |
| 102.txt | AC | 53 ms | 3676 KiB |
| 103.txt | AC | 62 ms | 3728 KiB |
| 104.txt | AC | 42 ms | 3660 KiB |
| 105.txt | AC | 45 ms | 3600 KiB |
| 106.txt | AC | 59 ms | 3644 KiB |
| 107.txt | AC | 64 ms | 3680 KiB |
| example0.txt | AC | 2 ms | 3644 KiB |
| example1.txt | AC | 3 ms | 3652 KiB |