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 |
|
|
| 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 |