#include<cstdio>usingnamespace std;
constint N = 2e3 + 100;
structnode {
int to, nxt;
}e[N << 1];
int n, mo, le[N], KK, sz[N], tmp[N];
int jc[N], inv[N], invs[N], f[N][N], g[N][N];
int sum[N], s0[N], ans[N];
intadd(int x, int y){return x + y >= mo ? x + y - mo : x + y;}
intdec(int x, int y){return x < y ? x - y + mo : x - y;}
intmul(int x, int y){return1ll * x * y % mo;}
intC(int n, int m){
if (n < 0 || m < 0 || n < m) return0;
returnmul(jc[n], mul(invs[m], invs[n - m]));
}
intksm(int x, int y){
int re = 1;
while (y) {
if (y & 1) re = mul(re, x);
x = mul(x, x); y >>= 1;
}
return re;
}
intInv(int x){returnksm(x, mo - 2);}
voidAdd(int x, int y){
e[++KK] = (node){y, le[x]}; le[x] = KK;
}
voidwork(int now, int father){
for (int i = le[now]; i; i = e[i].nxt)
if (e[i].to != father)
work(e[i].to, now);
for (int i = 1; i <= n; i++) {
sum[i] = 1; s0[i] = 0;
for (int j = le[now]; j; j = e[j].nxt)
if (e[j].to != father) {
if (!g[e[j].to][i]) s0[i]++;
else sum[i] = mul(sum[i], g[e[j].to][i]);
}
}
for (int i = 1; i <= n; i++)
if (s0[i]) f[now][i] = 0;
else f[now][i] = sum[i];
if (now != 1) {
for (int i = le[now]; i; i = e[i].nxt)
if (e[i].to != father) {
for (int j = 1; j <= n; j++) {
if (!g[e[i].to][j]) s0[j]--;
else sum[j] = mul(sum[j], Inv(g[e[i].to][j]));
if (!s0[j]) tmp[j] = add(tmp[j - 1], sum[j]);
else tmp[j] = tmp[j - 1];
f[now][j] = add(f[now][j], mul(f[e[i].to][j], tmp[j - 1]));
if (!g[e[i].to][j]) s0[j]++;
else sum[j] = mul(sum[j], g[e[i].to][j]);
}
}
}
for (int i = 1; i <= n; i++) g[now][i] = add(g[now][i - 1], f[now][i]);
}
intmain(){
scanf("%d %d", &n, &mo);
for (int i = 1; i < n; i++) {
int x, y; scanf("%d %d", &x, &y);
Add(x, y); Add(y, x);
}
jc[0] = 1; for (int i = 1; i < N; i++) jc[i] = mul(jc[i - 1], i);
inv[0] = inv[1] = 1; for (int i = 2; i < N; i++) inv[i] = mul(inv[mo % i], mo - mo / i);
invs[0] = 1; for (int i = 1; i < N; i++) invs[i] = mul(invs[i - 1], inv[i]);
work(1, 0);
for (int i = 1; i < n; i++) {
ans[i] = f[1][i];
for (int j = 1; j < i; j++)
ans[i] = dec(ans[i], mul(ans[j], C(i, j)));
printf("%d ", ans[i]);
}
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现