Please sign in first.
Submission #69903945
Source Code Expand
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
using namespace std;
const int N = 5005,mod = 998244353;
int siz[N],hd[N],cnt,n;
ll inv[N],f[N][N],ans;
struct node{int to,nex;}e[N << 1];
inline void add(int u,int v)
{e[++cnt] = {v,hd[u]};hd[u] = cnt;}
void dfs(int u,int fa)
{
f[u][1] = 1;siz[u] = 1;
for(int i = hd[u],v;i;i = e[i].nex)if((v = e[i].to) != fa)
{
dfs(v,u);
for(int j = siz[u];j;j--)
{
ll s = f[u][j];f[u][j] = 0;
for(int k = 1;k <= siz[v];k++)
{
ll x = s*f[v][k]%mod*inv[k];
(f[u][j+k] -= x) %= mod;
(f[u][j] += x) %= mod;
}
}
siz[u] += siz[v];
}
for(int j = 1;j <= siz[u];j++)(f[u][j] *= inv[j]) %= mod;
}
char buf[1<<21],*p1,*p2;
inline int rd()
{
char c;int f = 1;
while(!isdigit(c = getchar()))if(c=='-')f = -1;
int x = c-'0';
while(isdigit(c = getchar()))x = x*10+(c^48);
return x*f;
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
n = rd();inv[1] = 1;
for(int i = 2;i < N;i++)inv[i] = (mod-mod/i)*inv[mod%i]%mod;
for(int i = 1;i < n;i++)
{int u = rd(),v = rd();add(u,v);add(v,u);}
dfs(1,0);
for(int i = 1;i <= n;i++)(ans += f[1][i]) %= mod;
printf("%lld\n",(ans+mod)%mod);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Authentic Tree DP |
| User | max0810nb |
| Language | C++ 20 (gcc 12.2) |
| Score | 2000 |
| Code Size | 1537 Byte |
| Status | AC |
| Exec Time | 112 ms |
| Memory | 89872 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 2000 / 2000 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt |
| All | 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00-sample-001.txt | AC | 1 ms | 3804 KiB |
| 00-sample-002.txt | AC | 1 ms | 3816 KiB |
| 00-sample-003.txt | AC | 1 ms | 3656 KiB |
| 00-sample-004.txt | AC | 1 ms | 3836 KiB |
| 01-001.txt | AC | 1 ms | 3820 KiB |
| 01-002.txt | AC | 1 ms | 3900 KiB |
| 01-003.txt | AC | 1 ms | 3696 KiB |
| 01-004.txt | AC | 1 ms | 3948 KiB |
| 01-005.txt | AC | 1 ms | 3896 KiB |
| 01-006.txt | AC | 1 ms | 3744 KiB |
| 01-007.txt | AC | 1 ms | 3748 KiB |
| 01-008.txt | AC | 1 ms | 3880 KiB |
| 01-009.txt | AC | 1 ms | 3724 KiB |
| 01-010.txt | AC | 1 ms | 4656 KiB |
| 01-011.txt | AC | 4 ms | 7316 KiB |
| 01-012.txt | AC | 1 ms | 4192 KiB |
| 01-013.txt | AC | 4 ms | 8188 KiB |
| 01-014.txt | AC | 3 ms | 6916 KiB |
| 01-015.txt | AC | 2 ms | 6588 KiB |
| 01-016.txt | AC | 3 ms | 6944 KiB |
| 01-017.txt | AC | 3 ms | 6812 KiB |
| 01-018.txt | AC | 4 ms | 8368 KiB |
| 01-019.txt | AC | 20 ms | 23312 KiB |
| 01-020.txt | AC | 49 ms | 22668 KiB |
| 01-021.txt | AC | 34 ms | 18376 KiB |
| 01-022.txt | AC | 9 ms | 12020 KiB |
| 01-023.txt | AC | 64 ms | 45756 KiB |
| 01-024.txt | AC | 36 ms | 20076 KiB |
| 01-025.txt | AC | 26 ms | 16164 KiB |
| 01-026.txt | AC | 6 ms | 8900 KiB |
| 01-027.txt | AC | 69 ms | 50684 KiB |
| 01-028.txt | AC | 112 ms | 89872 KiB |
| 01-029.txt | AC | 55 ms | 23880 KiB |
| 01-030.txt | AC | 66 ms | 24280 KiB |
| 01-031.txt | AC | 95 ms | 71112 KiB |
| 01-032.txt | AC | 82 ms | 48556 KiB |
| 01-033.txt | AC | 54 ms | 24092 KiB |
| 01-034.txt | AC | 67 ms | 24672 KiB |
| 01-035.txt | AC | 67 ms | 24520 KiB |
| 01-036.txt | AC | 85 ms | 53348 KiB |