Submission #68572344


Source Code Expand

#include <bits/stdc++.h>
#define SZ(x) ((int)(x).size())
#define ALL(x) begin(x), end(x)
#define REP(i, n) for (int i = 0; i < int(n); i++)
#define REP1(i, a, b) for (int i = (a); i <= int(b); i++)

#if __has_include("shik/dump.h")
#include "shik/dump.h"  // IWYU pragma: keep
#else
#define dump(...) 0
#endif

using namespace std;

const int N = 2e5 + 10;

struct E {
  int to, w;
};

int n, m;
vector<int> es[N];
void input() {
  cin >> n >> m;
  REP(i, m) {
    int u, v;
    cin >> u >> v;
    es[u].push_back(v);
    es[v].push_back(u);
  }
}

int deg[N];

bool trimmed[N];
void trim() {
  queue<int> q;
  auto push = [&](int u) {
    if (!trimmed[u]) {
      trimmed[u] = true;
      q.push(u);
    }
  };
  REP1(i, 2, n - 1) if (deg[i] == 1) push(i);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    trimmed[u] = true;
    for (int v : es[u]) {
      if (v == 1 || v == n || trimmed[v]) continue;
      if (--deg[v] == 1) push(v);
    }
  }
  // REP1(i, 1, n) dump(i, trimmed[i]);
}

const int K = 45;

bool keep[N];
int kn, kid[N];
vector<E> ke[K];

void dfs(int r, int u, int f, int l) {
  for (int v : es[u]) {
    if (v == f) continue;
    if (keep[v]) {
      ke[kid[r]].push_back({kid[v], l + 1});
      continue;
    }
    dfs(r, v, u, l + 1);
  }
}

void shrink() {
  keep[1] = keep[n] = true;
  REP1(i, 2, n - 1) if (!trimmed[i] && deg[i] > 2) keep[i] = true;
  REP1(i, 1, n) if (keep[i]) kid[i] = ++kn;
  // REP1(i, 1, n) if (keep[i]) dump(i, kid[i]);

  REP1(i, 1, n) if (keep[i]) dfs(i, i, 0, 0);

  // REP1(i, 1, kn) {
  //   for (auto [to, w] : ke[i]) {
  //     dump(i, to, w);
  //   }
  // }
}

int sol[N];
bool vis[N];
void go(int u, int d) {
  if (u == kn) {
    sol[d]++;
    return;
  }
  vis[u] = true;
  for (auto [to, w] : ke[u]) {
    if (vis[to]) continue;
    if (d + w < n) go(to, d + w);
  }
  vis[u] = false;
}

void solve() {
  REP1(i, 1, n) deg[i] = SZ(es[i]);
  trim();
  shrink();
  go(1, 0);
  REP1(i, 1, n - 1) cout << sol[i] << (i == n - 1 ? '\n' : ' ');
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  input();
  solve();
  return 0;
}

Submission Info

Submission Time
Task G - Count Simple Paths 2
User shik
Language C++ 23 (gcc 12.2)
Score 600
Code Size 2234 Byte
Status AC
Exec Time 482 ms
Memory 37240 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 58
Set Name Test Cases
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_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt, 01_test_44.txt, 01_test_45.txt, 01_test_46.txt, 01_test_47.txt, 01_test_48.txt, 01_test_49.txt, 01_test_50.txt, 01_test_51.txt, 01_test_52.txt, 01_test_53.txt, 01_test_54.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 2 ms 3524 KiB
00_sample_01.txt AC 2 ms 3468 KiB
00_sample_02.txt AC 2 ms 3656 KiB
01_test_00.txt AC 56 ms 11716 KiB
01_test_01.txt AC 128 ms 18120 KiB
01_test_02.txt AC 55 ms 12316 KiB
01_test_03.txt AC 132 ms 17604 KiB
01_test_04.txt AC 94 ms 15272 KiB
01_test_05.txt AC 126 ms 17556 KiB
01_test_06.txt AC 29 ms 8940 KiB
01_test_07.txt AC 131 ms 17512 KiB
01_test_08.txt AC 22 ms 7816 KiB
01_test_09.txt AC 137 ms 18252 KiB
01_test_10.txt AC 25 ms 8120 KiB
01_test_11.txt AC 129 ms 17996 KiB
01_test_12.txt AC 246 ms 22588 KiB
01_test_13.txt AC 482 ms 22464 KiB
01_test_14.txt AC 332 ms 19128 KiB
01_test_15.txt AC 426 ms 22816 KiB
01_test_16.txt AC 213 ms 35252 KiB
01_test_17.txt AC 192 ms 35360 KiB
01_test_18.txt AC 143 ms 35236 KiB
01_test_19.txt AC 154 ms 35280 KiB
01_test_20.txt AC 152 ms 35348 KiB
01_test_21.txt AC 163 ms 35344 KiB
01_test_22.txt AC 178 ms 22992 KiB
01_test_23.txt AC 168 ms 22464 KiB
01_test_24.txt AC 160 ms 17680 KiB
01_test_25.txt AC 181 ms 23452 KiB
01_test_26.txt AC 175 ms 35336 KiB
01_test_27.txt AC 171 ms 35276 KiB
01_test_28.txt AC 172 ms 37240 KiB
01_test_29.txt AC 149 ms 37240 KiB
01_test_30.txt AC 126 ms 23412 KiB
01_test_31.txt AC 130 ms 23404 KiB
01_test_32.txt AC 142 ms 26108 KiB
01_test_33.txt AC 152 ms 26176 KiB
01_test_34.txt AC 130 ms 26304 KiB
01_test_35.txt AC 88 ms 16156 KiB
01_test_36.txt AC 106 ms 16208 KiB
01_test_37.txt AC 86 ms 16344 KiB
01_test_38.txt AC 110 ms 16228 KiB
01_test_39.txt AC 96 ms 16212 KiB
01_test_40.txt AC 88 ms 16268 KiB
01_test_41.txt AC 214 ms 16024 KiB
01_test_42.txt AC 245 ms 16168 KiB
01_test_43.txt AC 49 ms 16844 KiB
01_test_44.txt AC 53 ms 16856 KiB
01_test_45.txt AC 2 ms 3520 KiB
01_test_46.txt AC 108 ms 16128 KiB
01_test_47.txt AC 2 ms 3588 KiB
01_test_48.txt AC 141 ms 37124 KiB
01_test_49.txt AC 141 ms 34168 KiB
01_test_50.txt AC 122 ms 16592 KiB
01_test_51.txt AC 128 ms 17588 KiB
01_test_52.txt AC 165 ms 18260 KiB
01_test_53.txt AC 82 ms 37044 KiB
01_test_54.txt AC 76 ms 26116 KiB