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
AC × 4
AC × 40
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