Submission #28747672


Source Code Expand

#include <algorithm>
#include <array>
#include <bitset>
#include <cstring>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;

#define rep(i, n) for (int i = 0; i < n; i++)

using bs = bitset<128>;
using mat = array<bs, 100>;

mat mat_mul(mat A, mat B, int n) {
  mat C;
  rep(i, n) C[i].reset();
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (A[i].test(j)) C[i] |= B[j];
    }
  }
  return C;
}

mat mat_pow(mat a, int L, int n) {
  mat c;
  rep(i, n) {
    c[i].reset();
    c[i][i] = true;
  }
  while (L) {
    if (L & 1) c = mat_mul(a, c, n);
    L >>= 1;
    if (L) a = mat_mul(a, a, n);
  }
  return c;
}

int main() {
  int N, T, L;
  cin >> N >> T >> L;

  vector<pair<int, int>> es;
  for (int i = 1, u, v; i <= T; i++) {
    cin >> u >> v;
    --u, --v;
    es.emplace_back(u, v);
  }

  vector<int> ng(N, -1);
  vector<int> ok(N, 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));

    mat a;
    for (int i = 0; i < N; i++) a[i].reset();

    rep(i, T) {
      if (qs.empty()) break;
      a[es[i].first][es[i].second] = 1;
      if (qs.back().first == i) {
        mat c = mat_pow(a, L, N);
        while (qs.size() and qs.back().first == i) {
          int j = qs.back().second;
          qs.pop_back();
          if (c[0][j] == 1) {
            ok[j] = i;
          } else {
            ng[j] = i;
          }
        }
      }
    }
  }
  for (auto& x : ok) {
    if (++x == T + 1) x = -1;
  }
  rep(i, N) cout << ok[i] << " \n"[i == N - 1];
}

Submission Info

Submission Time
Task G - Good Vertices
User Nyaan
Language C++ (GCC 9.2.1)
Score 600
Code Size 1832 Byte
Status AC
Exec Time 465 ms
Memory 3744 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 110
Set Name Test Cases
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
Case Name Status Exec Time Memory
000.txt AC 8 ms 3444 KiB
001.txt AC 85 ms 3624 KiB
002.txt AC 2 ms 3540 KiB
003.txt AC 4 ms 3628 KiB
004.txt AC 11 ms 3720 KiB
005.txt AC 26 ms 3632 KiB
006.txt AC 13 ms 3636 KiB
007.txt AC 21 ms 3620 KiB
008.txt AC 5 ms 3600 KiB
009.txt AC 2 ms 3548 KiB
010.txt AC 6 ms 3608 KiB
011.txt AC 10 ms 3560 KiB
012.txt AC 5 ms 3520 KiB
013.txt AC 8 ms 3476 KiB
014.txt AC 6 ms 3440 KiB
015.txt AC 7 ms 3480 KiB
016.txt AC 3 ms 3448 KiB
017.txt AC 3 ms 3520 KiB
018.txt AC 6 ms 3584 KiB
019.txt AC 4 ms 3432 KiB
020.txt AC 3 ms 3512 KiB
021.txt AC 3 ms 3424 KiB
022.txt AC 5 ms 3524 KiB
023.txt AC 4 ms 3604 KiB
024.txt AC 11 ms 3524 KiB
025.txt AC 6 ms 3548 KiB
026.txt AC 2 ms 3476 KiB
027.txt AC 3 ms 3440 KiB
028.txt AC 4 ms 3500 KiB
029.txt AC 5 ms 3612 KiB
030.txt AC 12 ms 3560 KiB
031.txt AC 13 ms 3540 KiB
032.txt AC 2 ms 3424 KiB
033.txt AC 2 ms 3420 KiB
034.txt AC 4 ms 3444 KiB
035.txt AC 5 ms 3508 KiB
036.txt AC 14 ms 3588 KiB
037.txt AC 3 ms 3508 KiB
038.txt AC 12 ms 3624 KiB
039.txt AC 3 ms 3552 KiB
040.txt AC 9 ms 3612 KiB
041.txt AC 11 ms 3612 KiB
042.txt AC 13 ms 3608 KiB
043.txt AC 18 ms 3724 KiB
044.txt AC 8 ms 3688 KiB
045.txt AC 10 ms 3700 KiB
046.txt AC 11 ms 3624 KiB
047.txt AC 12 ms 3476 KiB
048.txt AC 12 ms 3588 KiB
049.txt AC 14 ms 3624 KiB
050.txt AC 10 ms 3544 KiB
051.txt AC 13 ms 3444 KiB
052.txt AC 10 ms 3560 KiB
053.txt AC 11 ms 3520 KiB
054.txt AC 9 ms 3508 KiB
055.txt AC 11 ms 3508 KiB
056.txt AC 18 ms 3520 KiB
057.txt AC 13 ms 3436 KiB
058.txt AC 11 ms 3552 KiB
059.txt AC 15 ms 3592 KiB
060.txt AC 75 ms 3520 KiB
061.txt AC 69 ms 3724 KiB
062.txt AC 51 ms 3708 KiB
063.txt AC 40 ms 3708 KiB
064.txt AC 8 ms 3624 KiB
065.txt AC 65 ms 3648 KiB
066.txt AC 49 ms 3508 KiB
067.txt AC 23 ms 3604 KiB
068.txt AC 3 ms 3472 KiB
069.txt AC 2 ms 3512 KiB
070.txt AC 21 ms 3636 KiB
071.txt AC 19 ms 3572 KiB
072.txt AC 45 ms 3532 KiB
073.txt AC 25 ms 3468 KiB
074.txt AC 4 ms 3624 KiB
075.txt AC 23 ms 3428 KiB
076.txt AC 44 ms 3636 KiB
077.txt AC 79 ms 3632 KiB
078.txt AC 96 ms 3636 KiB
079.txt AC 70 ms 3676 KiB
080.txt AC 103 ms 3632 KiB
081.txt AC 90 ms 3716 KiB
082.txt AC 104 ms 3736 KiB
083.txt AC 92 ms 3680 KiB
084.txt AC 81 ms 3744 KiB
085.txt AC 90 ms 3632 KiB
086.txt AC 103 ms 3640 KiB
087.txt AC 50 ms 3708 KiB
088.txt AC 83 ms 3568 KiB
089.txt AC 86 ms 3724 KiB
090.txt AC 102 ms 3648 KiB
091.txt AC 89 ms 3592 KiB
092.txt AC 122 ms 3700 KiB
093.txt AC 74 ms 3588 KiB
094.txt AC 70 ms 3656 KiB
095.txt AC 60 ms 3540 KiB
096.txt AC 77 ms 3608 KiB
097.txt AC 13 ms 3528 KiB
098.txt AC 24 ms 3588 KiB
099.txt AC 26 ms 3652 KiB
100.txt AC 30 ms 3672 KiB
101.txt AC 20 ms 3524 KiB
102.txt AC 23 ms 3600 KiB
103.txt AC 23 ms 3708 KiB
104.txt AC 21 ms 3528 KiB
105.txt AC 19 ms 3608 KiB
106.txt AC 22 ms 3720 KiB
107.txt AC 465 ms 3568 KiB
example0.txt AC 3 ms 3508 KiB
example1.txt AC 2 ms 3552 KiB