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 |
|
|
| 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 |