Submission #45683174


Source Code Expand

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll mod = 998244353;
#define SIZE 100000
ll inv[SIZE+1];
ll kai[SIZE+1];
ll invkai[SIZE+1];
void invinit()
{
	inv[1] = 1;
	for (int i = 2; i <= SIZE; i++)
	{
		inv[i] = mod - (mod / i)*inv[mod%i] % mod;
	}
	kai[0] = invkai[0] = 1;
	for (int i = 1; i <= SIZE; i++)
	{
		kai[i] = kai[i - 1] * i%mod;
		invkai[i] = invkai[i - 1] * inv[i] % mod;
	}
}
ll com[222][222];
vector<int>pat[111];
bool flag[111];
ll dp[101][101][101];
ll zd[111][111];
ll zzzd[111][111];
int gen;
ll ans[111];
int dfs(int node,bool fff)
{
    flag[node]=true;
    int sz=0;
    dp[node][0][0]=1;
    for(int i=0;i<pat[node].size();i++)
    {
        int v=pat[node][i];
        if(flag[v])continue;
        int s=dfs(v,false);
        for(int j=0;j<=sz+s;j++)for(int k=0;k<=sz+s;k++)zd[j][k]=0;
        for(int j=0;j<=sz;j++)
        {
            for(int k=0;k<=s;k++)
            {
                for(int l=0;l<=sz;l++)
                {
                    for(int m=0;m<=s;m++)
                    {
                        if(dp[node][j][l]==0||dp[v][k][m]==0)continue;
                        zd[j+k][l+m]=(zd[j+k][l+m]+dp[node][j][l]*dp[v][k][m]%mod*com[j+k][j]%mod*com[sz+s-j-k][sz-j])%mod;
                    }
                }
            }
        }
        for(int j=0;j<=sz+s;j++)for(int k=0;k<=sz+s;k++)dp[node][j][k]=zd[j][k];
        sz+=s;
    }
    /*printf("++++%d\n",node+1);
    for(int i=0;i<=sz;i++)
    {
        for(int j=0;j<=sz;j++)
        {
            printf("%lld ",dp[node][i][j]);
        }
        printf("\n");
    }
    printf("\n");*/
    if(fff)
    {
        for(int i=0;i<=sz;i++)
        {
            for(int j=gen;j<=sz;j++)
            {
                ans[node]=(ans[node]+dp[node][i][j])%mod;
            }
        }
    }
    for(int i=0;i<=sz+1;i++)for(int j=0;j<=sz+1;j++)zzzd[i][j]=0;
    for(int k=0;k<=sz;k++)
    {
        for(int i=0;i<=sz;i++)
        {
            for(int j=0;j<=sz;j++)
            {
                if(k<=i)
                {
                    zzzd[i+1][0]+=dp[node][i][j];
                }
                if(k>=i)
                {
                    zzzd[i][j+1]+=dp[node][i][j];
                }
            }
        }
    }
    for(int i=0;i<=sz+1;i++)for(int j=0;j<=sz+1;j++)dp[node][i][j]=zzzd[i][j]%mod;
    /*for(int i=0;i<=sz+1;i++)
    {
        for(int j=0;j<=sz+1;j++)
        {
            printf("%lld ",dp[node][i][j]);
        }
        printf("\n");
    }*/
    return sz+1;
}
int main()
{
    int num;
    scanf("%d%d",&num,&gen);
    invinit();
    for(int i=0;i<num-1;i++)
    {
        int za,zb;
        scanf("%d%d",&za,&zb);
        za--,zb--;
        pat[za].push_back(zb);
        pat[zb].push_back(za);
    }
    for(int i=0;i<111;i++)
    {
        com[i][0]=1;
        for(int j=1;j<=i;j++)com[i][j]=(com[i-1][j-1]+com[i-1][j])%mod;
    }
    ll s=0;
    for(int i=0;i<num;i++)
    {
        //printf("------root: %d\n",i+1);
        fill(flag,flag+num,false);
        for(int j=0;j<=num;j++)for(int k=0;k<=num;k++)for(int l=0;l<=num;l++)dp[i][j][k]=0;
        dfs(i,true);
        //printf("ans: %lld\n",ans[i]);
        s=(s+ans[i])%mod;
    }
    printf("%lld\n",s*invkai[num]%mod);
}

Submission Info

Submission Time
Task E - Random Isolation
User DEGwer
Language C++ 20 (gcc 12.2)
Score 700
Code Size 3415 Byte
Status AC
Exec Time 1810 ms
Memory 14008 KiB

Compile Error

Main.cpp: In function ‘int dfs(int, bool)’:
Main.cpp:38:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   38 |     for(int i=0;i<pat[node].size();i++)
      |                 ~^~~~~~~~~~~~~~~~~
Main.cpp: In function ‘int main()’:
Main.cpp:113:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  113 |     scanf("%d%d",&num,&gen);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
Main.cpp:118:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  118 |         scanf("%d%d",&za,&zb);
      |         ~~~~~^~~~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 52
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_rand_01.txt, 01_rand_02.txt, 01_rand_03.txt, 01_rand_04.txt, 01_rand_05.txt, 01_rand_06.txt, 01_rand_07.txt, 01_rand_08.txt, 01_rand_09.txt, 01_rand_10.txt, 01_rand_11.txt, 01_rand_12.txt, 01_rand_13.txt, 01_rand_14.txt, 01_rand_15.txt, 01_rand_16.txt, 01_rand_17.txt, 01_rand_18.txt, 01_rand_19.txt, 01_rand_20.txt, 02_line_01.txt, 02_line_02.txt, 02_line_03.txt, 03_star_01.txt, 03_star_02.txt, 03_star_03.txt, 04_caterpillar_01.txt, 04_caterpillar_02.txt, 04_caterpillar_03.txt, 05_worst_01.txt, 05_worst_02.txt, 05_worst_03.txt, 05_worst_04.txt, 05_worst_05.txt, 05_worst_06.txt, 05_worst_07.txt, 05_worst_08.txt, 05_worst_09.txt, 05_worst_10.txt, 05_worst_11.txt, 05_worst_12.txt, 05_worst_13.txt, 05_worst_14.txt, 06_handmade_01.txt, 06_handmade_02.txt, 06_handmade_03.txt, 06_handmade_04.txt, 06_handmade_05.txt, 06_handmade_06.txt, 06_handmade_07.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 3 ms 5676 KiB
00_sample_02.txt AC 4 ms 6144 KiB
01_rand_01.txt AC 899 ms 13844 KiB
01_rand_02.txt AC 862 ms 13712 KiB
01_rand_03.txt AC 900 ms 13780 KiB
01_rand_04.txt AC 880 ms 13732 KiB
01_rand_05.txt AC 1001 ms 13948 KiB
01_rand_06.txt AC 1307 ms 13732 KiB
01_rand_07.txt AC 1328 ms 13884 KiB
01_rand_08.txt AC 1323 ms 13952 KiB
01_rand_09.txt AC 1319 ms 13880 KiB
01_rand_10.txt AC 1303 ms 13832 KiB
01_rand_11.txt AC 539 ms 13952 KiB
01_rand_12.txt AC 506 ms 13868 KiB
01_rand_13.txt AC 532 ms 13868 KiB
01_rand_14.txt AC 520 ms 13956 KiB
01_rand_15.txt AC 547 ms 13952 KiB
01_rand_16.txt AC 1254 ms 13952 KiB
01_rand_17.txt AC 1227 ms 13956 KiB
01_rand_18.txt AC 1231 ms 13880 KiB
01_rand_19.txt AC 1234 ms 13732 KiB
01_rand_20.txt AC 1199 ms 13732 KiB
02_line_01.txt AC 1810 ms 13960 KiB
02_line_02.txt AC 1202 ms 13088 KiB
02_line_03.txt AC 71 ms 7928 KiB
03_star_01.txt AC 353 ms 13944 KiB
03_star_02.txt AC 38 ms 8396 KiB
03_star_03.txt AC 134 ms 11104 KiB
04_caterpillar_01.txt AC 1291 ms 13952 KiB
04_caterpillar_02.txt AC 206 ms 9716 KiB
04_caterpillar_03.txt AC 269 ms 10104 KiB
05_worst_01.txt AC 1285 ms 13864 KiB
05_worst_02.txt AC 1215 ms 13732 KiB
05_worst_03.txt AC 1282 ms 13796 KiB
05_worst_04.txt AC 1220 ms 13952 KiB
05_worst_05.txt AC 996 ms 13736 KiB
05_worst_06.txt AC 968 ms 13732 KiB
05_worst_07.txt AC 1049 ms 13872 KiB
05_worst_08.txt AC 975 ms 13704 KiB
05_worst_09.txt AC 416 ms 11956 KiB
05_worst_10.txt AC 861 ms 13632 KiB
05_worst_11.txt AC 513 ms 12604 KiB
05_worst_12.txt AC 765 ms 13468 KiB
05_worst_13.txt AC 423 ms 12128 KiB
05_worst_14.txt AC 356 ms 11204 KiB
06_handmade_01.txt AC 3 ms 5724 KiB
06_handmade_02.txt AC 1210 ms 13860 KiB
06_handmade_03.txt AC 1218 ms 13884 KiB
06_handmade_04.txt AC 946 ms 14008 KiB
06_handmade_05.txt AC 988 ms 13848 KiB
06_handmade_06.txt AC 1294 ms 13784 KiB
06_handmade_07.txt AC 1286 ms 13952 KiB