Submission #1816615
Source Code Expand
#include<bits/stdc++.h> #define maxn 2010 #define mod 1000000007 using namespace std; struct edge{ int r,nxt; }e[maxn<<1]; int head[maxn],esz,fac[maxn],dp[maxn][maxn][3],n; void addedge(int u,int v){ e[++esz].r=v;e[esz].nxt=head[u];head[u]=esz; } int dfs(int u){ dp[u][0][0]=1; int sz=1,s; for(int t=head[u],v;t;t=e[t].nxt){ s=dfs(v=e[t].r); for(int i=sz-1;i>=0;--i) for(int j=s-1;j>=0;--j){ int A=(1ll*dp[v][j][0]+dp[v][j][1]+dp[v][j][2])%mod; dp[u][i+j+1][1]=(dp[u][i+j+1][1]+1ll*dp[u][i][0]*(2ll*dp[v][j][0]+dp[v][j][1]))%mod; dp[u][i+j+1][2]=(dp[u][i+j+1][2]+1ll*dp[u][i][1]*(dp[v][j][0]+1ll*dp[v][j][1]*(mod+1)/2%mod))%mod; if(j==0){ dp[u][i][0]=1ll*dp[u][i][0]*A%mod; dp[u][i][1]=1ll*dp[u][i][1]*A%mod; dp[u][i][2]=1ll*dp[u][i][2]*A%mod; } else { dp[u][i+j][0]=(dp[u][i+j][0]+1ll*dp[u][i][0]*A)%mod; dp[u][i+j][1]=(dp[u][i+j][1]+1ll*dp[u][i][1]*A)%mod; dp[u][i+j][2]=(dp[u][i+j][2]+1ll*dp[u][i][2]*A)%mod; } } sz+=s; } return sz; } int main(){ scanf("%d",&n),fac[0]=1; for(int i=1;i<=n;++i) fac[i]=1ll*fac[i-1]*i%mod; for(int i=2,x;i<=n;++i) scanf("%d",&x),addedge(x,i); dfs(1); int ans=0; for(int i=0;i<n;++i) ans=(ans+1ll*(i&1?-1:1)*fac[n-i]*(1ll*dp[1][i][0]+dp[1][i][1]+dp[1][i][2])%mod+mod)%mod; printf("%d",ans); }
Submission Info
Submission Time | |
---|---|
Task | A - Awkward |
User | yfzcsc |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 1364 Byte |
Status | AC |
Exec Time | 44 ms |
Memory | 47616 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:38:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&n),fac[0]=1; ^ ./Main.cpp:42:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&x),addedge(x,i); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | a01, a02, a03, a04 |
All | a01, a02, a03, a04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49, b50, b51, b52, b53, b54, b55 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
a01 | AC | 1 ms | 256 KB |
a02 | AC | 1 ms | 256 KB |
a03 | AC | 1 ms | 256 KB |
a04 | AC | 1 ms | 256 KB |
b05 | AC | 1 ms | 256 KB |
b06 | AC | 44 ms | 45696 KB |
b07 | AC | 43 ms | 47616 KB |
b08 | AC | 42 ms | 45824 KB |
b09 | AC | 42 ms | 45824 KB |
b10 | AC | 42 ms | 45696 KB |
b11 | AC | 42 ms | 45696 KB |
b12 | AC | 42 ms | 45696 KB |
b13 | AC | 42 ms | 45696 KB |
b14 | AC | 43 ms | 45696 KB |
b15 | AC | 42 ms | 45824 KB |
b16 | AC | 14 ms | 23168 KB |
b17 | AC | 2 ms | 2688 KB |
b18 | AC | 1 ms | 256 KB |
b19 | AC | 42 ms | 45824 KB |
b20 | AC | 42 ms | 45824 KB |
b21 | AC | 42 ms | 45696 KB |
b22 | AC | 42 ms | 45824 KB |
b23 | AC | 42 ms | 45696 KB |
b24 | AC | 42 ms | 45824 KB |
b25 | AC | 43 ms | 47104 KB |
b26 | AC | 43 ms | 45696 KB |
b27 | AC | 43 ms | 47488 KB |
b28 | AC | 43 ms | 45696 KB |
b29 | AC | 43 ms | 47488 KB |
b30 | AC | 44 ms | 47488 KB |
b31 | AC | 43 ms | 47488 KB |
b32 | AC | 43 ms | 47488 KB |
b33 | AC | 42 ms | 45824 KB |
b34 | AC | 42 ms | 45824 KB |
b35 | AC | 42 ms | 45824 KB |
b36 | AC | 42 ms | 45824 KB |
b37 | AC | 42 ms | 45824 KB |
b38 | AC | 42 ms | 45824 KB |
b39 | AC | 42 ms | 45824 KB |
b40 | AC | 42 ms | 45824 KB |
b41 | AC | 42 ms | 45824 KB |
b42 | AC | 42 ms | 45824 KB |
b43 | AC | 42 ms | 45824 KB |
b44 | AC | 42 ms | 45824 KB |
b45 | AC | 43 ms | 47360 KB |
b46 | AC | 43 ms | 47488 KB |
b47 | AC | 43 ms | 47616 KB |
b48 | AC | 43 ms | 47616 KB |
b49 | AC | 43 ms | 47616 KB |
b50 | AC | 43 ms | 45696 KB |
b51 | AC | 43 ms | 45696 KB |
b52 | AC | 43 ms | 45696 KB |
b53 | AC | 43 ms | 45696 KB |
b54 | AC | 43 ms | 45696 KB |
b55 | AC | 43 ms | 46592 KB |