Submission #1883114


Source Code Expand

#include <bits/stdc++.h>
 
#define REP(i,n) for(int i=0; i<(int)(n); ++i)
#define FOR(i,k,n) for(int i=(k);i<(int)(n);++i)
typedef long long int ll;
using namespace std;

ll dp[2010][2];
ll nb_depth[2010];

vector<int> G[2010];
const ll MOD = 1e9+7;
 
void count_depth(int v, int depth){
	nb_depth[depth]++;
	REP(i, G[v].size()){
		count_depth(G[v][i], depth+1);
	}
}


ll mpow(ll a, ll b){
	if(b == 0) return 1;
	if(b < 0) return 0;
	if(b%2) return (a*mpow(a, b-1)) % MOD;
	ll ret = mpow(a, b/2);
	return (ret*ret)%MOD;
}

void dfs(int v, int d) {
    if(d == 0) {
        dp[v][0] = dp[v][1] = 1;
        return;
    }
    ll x = 1, y = 1;
    for(auto c: G[v]) {
        dfs(c, d-1);
        x = (x * dp[c][0]) % MOD;
        y = (y * (dp[c][0]+dp[c][1])) % MOD;
    }
    for(auto c: G[v]) {
        // n^{-1} mod p = n^{p-2} mod p
        dp[v][1] += ((x * mpow(dp[c][0], MOD-2)) % MOD * dp[c][1]) % MOD;
        dp[v][1] %= MOD;
    }
    dp[v][0] = (y - dp[v][1] + MOD) % MOD;
}


int main(void) {
    int N;
    cin >> N;
    if(N>2000) return 0;
    REP(i, N) {
        int p;
        cin >> p;
        G[p].push_back(i+1);
    }
    count_depth(0, 0);
    ll ans = 0;
    REP(d, N+1) {
        REP(j, 2010) {
            REP(k, 2) {
                dp[j][k] = 0;
            }
        }
        dfs(0, d);
        ans = (ans + dp[0][1] * mpow(2, N-nb_depth[d]+1)) % MOD;
    }
    cout << ans << endl;
}

Submission Info

Submission Time
Task E - Smuggling Marbles
User kivantium
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1483 Byte
Status WA
Exec Time 1149 ms
Memory 640 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 400 / 400 0 / 600
Status
AC × 3
AC × 20
AC × 20
WA × 32
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
Subtask1 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, s1_01.txt, s1_02.txt, s1_03.txt, s1_04.txt, s1_05.txt, s1_06.txt, s1_07.txt, s1_08.txt, s1_09.txt, s1_10.txt, s1_11.txt, s1_12.txt, s1_13.txt, s1_14.txt, s1_15.txt, s1_16.txt, s1_17.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, s1_01.txt, s1_02.txt, s1_03.txt, s1_04.txt, s1_05.txt, s1_06.txt, s1_07.txt, s1_08.txt, s1_09.txt, s1_10.txt, s1_11.txt, s1_12.txt, s1_13.txt, s1_14.txt, s1_15.txt, s1_16.txt, s1_17.txt, s2_01.txt, s2_02.txt, s2_03.txt, s2_04.txt, s2_05.txt, s2_06.txt, s2_07.txt, s2_08.txt, s2_09.txt, s2_10.txt, s2_11.txt, s2_12.txt, s2_13.txt, s2_14.txt, s2_15.txt, s2_16.txt, s2_17.txt, s2_18.txt, s2_19.txt, s2_20.txt, s2_21.txt, s2_22.txt, s2_23.txt, s2_24.txt, s2_25.txt, s2_26.txt, s2_27.txt, s2_28.txt, s2_29.txt, s2_30.txt, s2_31.txt, s2_32.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 1 ms 384 KB
00_example_02.txt AC 1 ms 384 KB
00_example_03.txt AC 2 ms 384 KB
s1_01.txt AC 136 ms 384 KB
s1_02.txt AC 84 ms 384 KB
s1_03.txt AC 427 ms 384 KB
s1_04.txt AC 3 ms 384 KB
s1_05.txt AC 62 ms 384 KB
s1_06.txt AC 1111 ms 384 KB
s1_07.txt AC 84 ms 384 KB
s1_08.txt AC 575 ms 640 KB
s1_09.txt AC 44 ms 384 KB
s1_10.txt AC 1129 ms 384 KB
s1_11.txt AC 85 ms 384 KB
s1_12.txt AC 424 ms 384 KB
s1_13.txt AC 3 ms 384 KB
s1_14.txt AC 1149 ms 512 KB
s1_15.txt AC 1147 ms 384 KB
s1_16.txt AC 1139 ms 384 KB
s1_17.txt AC 1149 ms 384 KB
s2_01.txt WA 1 ms 256 KB
s2_02.txt WA 1 ms 256 KB
s2_03.txt WA 1 ms 256 KB
s2_04.txt WA 1 ms 256 KB
s2_05.txt WA 1 ms 256 KB
s2_06.txt WA 1 ms 256 KB
s2_07.txt WA 1 ms 256 KB
s2_08.txt WA 1 ms 256 KB
s2_09.txt WA 1 ms 256 KB
s2_10.txt WA 1 ms 256 KB
s2_11.txt WA 1 ms 256 KB
s2_12.txt WA 1 ms 256 KB
s2_13.txt WA 1 ms 256 KB
s2_14.txt WA 1 ms 256 KB
s2_15.txt WA 1 ms 256 KB
s2_16.txt WA 1 ms 256 KB
s2_17.txt WA 1 ms 256 KB
s2_18.txt WA 1 ms 256 KB
s2_19.txt WA 1 ms 256 KB
s2_20.txt WA 1 ms 256 KB
s2_21.txt WA 1 ms 256 KB
s2_22.txt WA 1 ms 256 KB
s2_23.txt WA 1 ms 256 KB
s2_24.txt WA 1 ms 256 KB
s2_25.txt WA 1 ms 256 KB
s2_26.txt WA 1 ms 256 KB
s2_27.txt WA 1 ms 256 KB
s2_28.txt WA 1 ms 256 KB
s2_29.txt WA 1 ms 256 KB
s2_30.txt WA 1 ms 256 KB
s2_31.txt WA 1 ms 256 KB
s2_32.txt WA 1 ms 256 KB