提出 #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
結果
AC × 2
AC × 110
セット名 テストケース
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