diff --git a/TangDou/Topic/HuanGenDp/SubTree.cpp b/TangDou/Topic/HuanGenDp/SubTree.cpp index b50562d..a4e394f 100644 --- a/TangDou/Topic/HuanGenDp/SubTree.cpp +++ b/TangDou/Topic/HuanGenDp/SubTree.cpp @@ -4,15 +4,16 @@ using namespace std; #define endl "\n" const int N = 100010, M = N << 1; -int f[N], g[N], mod; -int pro1[N], pro2[N]; - // 链式前向星 int e[M], h[N], idx, w[M], ne[M]; void add(int a, int b, int c = 0) { e[idx] = b, ne[idx] = h[a], w[idx] = c, h[a] = idx++; } +int f[N], g[N]; +int n, mod; +int pro1[N], pro2[N]; + void dfs1(int u, int fa) { f[u] = 1; vector edgeson; @@ -51,8 +52,6 @@ void dfs2(int u, int fa) { signed main() { // 初始化链式前向星 memset(h, -1, sizeof h); - - int n; cin >> n >> mod; for (int i = 1; i < n; i++) { @@ -60,7 +59,8 @@ signed main() { cin >> a >> b; add(a, b), add(b, a); } + dfs1(1, 0); dfs2(1, 0); - for (int i = 1; i <= n; i++) printf("%d\n", 1LL * f[i] * g[i] % mod); + for (int i = 1; i <= n; i++) cout << f[i] * g[i] % mod << endl; } \ No newline at end of file