From 3673870d3609f9947c40d631570b6715149a2d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Thu, 22 Feb 2024 15:55:03 +0800 Subject: [PATCH] 'commit' --- .../LanQiaoBei/LanQiao15STEMA20231217/11.cpp | 38 ++++++++----------- .../LanQiaoBei/LanQiao15STEMA20231217/11.in | 9 +++++ 2 files changed, 24 insertions(+), 23 deletions(-) create mode 100644 TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.in diff --git a/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.cpp b/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.cpp index 58f1904..7c08cb7 100644 --- a/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.cpp +++ b/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.cpp @@ -1,8 +1,8 @@ #include using namespace std; const int N = 100010; -vector g[N], f[N]; // 邻接表,一个正图,一个反图 -int c[N]; // 每个树洞中松鼠的数量 +vector g[N]; // 邻接表,一个正图,一个反图 +int c[N]; // 每个树洞中松鼠的数量 /* 测试用例 4 @@ -15,19 +15,21 @@ int c[N]; // 每个树洞中松鼠的数量 2 4 2 */ -int dfs1(int u, int k) { - if (k == 0) return 0; +int dfs(int u, int fa, int k) { + if (k == 0) return c[u]; int sum = c[u]; - for (int i = 0; i < g[u].size(); i++) sum += dfs1(g[u][i], k - 1); - return sum; -} -int dfs2(int u, int k) { - if (k == 0) return 0; - int sum = c[u]; - for (int i = 0; i < f[u].size(); i++) sum += dfs2(f[u][i], k - 1); + for (int i = 0; i < g[u].size(); i++) { + if (g[u][i] == fa) continue; + sum += dfs(g[u][i], u, k - 1); + } return sum; } + int main() { +#ifndef ONLINE_JUDGE + freopen("11.in", "r", stdin); +#endif + int n; // 树洞的数量 cin >> n; @@ -37,21 +39,11 @@ int main() { int a, b; // 表示两个树洞相连接 cin >> a >> b; g[a].push_back(b); // 用邻接表保存一下某个树洞与哪两个其它树洞相连接 - f[b].push_back(a); // 建反图 + g[b].push_back(a); } int k; cin >> k; - - for (int i = 1; i <= n; i++) { - // 计算i号树洞与它在k个距离内的所有树洞的松鼠个数和 - // 1、向下k个距离 k<=20 - int sum = dfs1(i, k); - // 2、向上k个距离 k<=20 - sum += dfs2(i, k); - - cout << sum - c[i] << endl; - } - + for (int i = 1; i <= n; i++) cout << dfs(i, -1, k) << endl; return 0; } \ No newline at end of file diff --git a/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.in b/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.in new file mode 100644 index 0000000..14224a9 --- /dev/null +++ b/TangDou/LanQiaoBei/LanQiao15STEMA20231217/11.in @@ -0,0 +1,9 @@ +4 +5 +3 +6 +1 +1 2 +1 3 +2 4 +2 \ No newline at end of file