Submission #1986105


Source Code Expand

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <iostream>
#include <functional>
#include <unordered_map>
#include <unordered_set>
#include <list>
#include <bitset>

using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define szz(x) ((int)(x).size())
#define rep(i, n) for(int i=0;i<n;i++)
#define all(x) (x).begin(), (x).end()
typedef tuple<int, int, int> t3;
typedef pair<ll, ll> pll;
typedef long double ldouble;
typedef pair<double, double> pdd;

ll h[100];

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <iostream>
#include <functional>
#include <unordered_map>
#include <unordered_set>
#include <list>
#include <bitset>

using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define szz(x) ((int)(x).size())
#define rep(i, n) for(int i=0;i<n;i++)
#define all(x) (x).begin(), (x).end()
typedef tuple<int, int, int> t3;
typedef pair<ll, ll> pll;
typedef long double ldouble;
typedef pair<double, double> pdd;

const int MOD = 1e9 + 7;
int N;
vector <int> E[200020], A[200020];
set <int> F[200020];
int p2[200020];
int p[200020], pp[200020]; int Find(int x) { return p[x] == x ? x : p[x] = Find(p[x]); }

int pw(int x, int y = MOD - 2) {
	int res = 1;
	while(y) {
		if(y & 1) res = (ll) res * x % MOD;
		x = (ll) x * x % MOD;
		y >>= 1;
	}
	return res;
}

pii dfs(int x) {
	if(szz(F[x]) == 0) return pii(1, 1);
	vector <pii> v;
	for(int e : F[x]) {
		v.pb(dfs(e));
	}
	ll t1 = 1;
	for(pii e : v) t1 = t1 * (ll) (e.Fi + e.Se) % MOD;
	ll s = 1;
	for(pii e : v) s = s * (ll) e.Se % MOD;
	ll t2 = 0;
	for(pii e : v) t2 = (t2 + s * pw(e.Se) % MOD * e.Fi) % MOD;
	t1 -= t2; if(t1 < 0) t1 += MOD;
	return pii((int)t2, (int)t1);
}

void solve(){
	p2[0] = 1;
	for(int i=1;i<200020;i++) p2[i] = p2[i-1] * 2 % MOD;
	scanf("%d", &N);
	for(int i=1;i<=N;i++) {
		int x;
		scanf("%d", &x);
		E[x].pb(i);
	}
	for(int i=1;i<=N;i++) p[i] = i;
	int ans = p2[N];
	A[0].pb(0);
	for(int u=0;;u++) {
		for(int e : A[u]) {
			for(int f : E[e]) A[u+1].pb(f);
			if(szz(E[e]) == 0) {
				int par = pp[Find(e)];
				F[par].erase(Find(e));
				
				if(szz(F[par]) == 1 && par) {
					int ppar = pp[par];
					p[par] = ppar;
					int u = *F[par].begin();
					pp[u] = ppar;
					F[ppar].erase(par);
					F[ppar].insert(u); F[par].clear();
				}
			}
			else if(szz(E[e]) == 1) p[Find(E[e][0])] = Find(e);
			else {
				for(int f : E[e]) {
					F[Find(e)].insert(f); pp[f] = Find(e);
				}
			}
		}
		if(szz(A[u+1]) == 0) break;
		ans = (ans + dfs(0).Fi * (ll)p2[N + 1 - szz(A[u+1])]) % MOD;
	}
	printf("%d\n", ans);
}

int main(){
	int Tc = 1;// scanf("%d", &Tc);
	for(int tc=1;tc<=Tc;tc++){
		solve();
	}
	return 0;
}

Submission Info

Submission Time
Task E - Smuggling Marbles
User molamola
Language C++14 (GCC 5.4.1)
Score 1000
Code Size 3230 Byte
Status AC
Exec Time 163 ms
Memory 34420 KB

Compile Error

./Main.cpp: In function ‘void solve()’:
./Main.cpp:103:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N);
                 ^
./Main.cpp:106:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &x);
                  ^

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 400 / 400 600 / 600
Status
AC × 3
AC × 20
AC × 52
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 9 ms 19840 KB
00_example_02.txt AC 8 ms 19840 KB
00_example_03.txt AC 8 ms 19840 KB
s1_01.txt AC 9 ms 19840 KB
s1_02.txt AC 9 ms 19840 KB
s1_03.txt AC 9 ms 19840 KB
s1_04.txt AC 8 ms 19840 KB
s1_05.txt AC 9 ms 19840 KB
s1_06.txt AC 9 ms 19968 KB
s1_07.txt AC 9 ms 19840 KB
s1_08.txt AC 9 ms 19968 KB
s1_09.txt AC 9 ms 19840 KB
s1_10.txt AC 10 ms 19968 KB
s1_11.txt AC 9 ms 19840 KB
s1_12.txt AC 9 ms 19840 KB
s1_13.txt AC 8 ms 19840 KB
s1_14.txt AC 10 ms 19840 KB
s1_15.txt AC 10 ms 19840 KB
s1_16.txt AC 10 ms 19840 KB
s1_17.txt AC 10 ms 19840 KB
s2_01.txt AC 19 ms 20480 KB
s2_02.txt AC 10 ms 19968 KB
s2_03.txt AC 87 ms 25088 KB
s2_04.txt AC 59 ms 22784 KB
s2_05.txt AC 108 ms 24704 KB
s2_06.txt AC 126 ms 27388 KB
s2_07.txt AC 88 ms 24192 KB
s2_08.txt AC 49 ms 21888 KB
s2_09.txt AC 132 ms 27132 KB
s2_10.txt AC 109 ms 25088 KB
s2_11.txt AC 125 ms 34420 KB
s2_12.txt AC 10 ms 20096 KB
s2_13.txt AC 52 ms 33024 KB
s2_14.txt AC 54 ms 33024 KB
s2_15.txt AC 50 ms 31744 KB
s2_16.txt AC 20 ms 20992 KB
s2_17.txt AC 11 ms 19968 KB
s2_18.txt AC 99 ms 29308 KB
s2_19.txt AC 63 ms 25472 KB
s2_20.txt AC 157 ms 27264 KB
s2_21.txt AC 163 ms 27136 KB
s2_22.txt AC 138 ms 28028 KB
s2_23.txt AC 148 ms 27264 KB
s2_24.txt AC 150 ms 27776 KB
s2_25.txt AC 133 ms 28672 KB
s2_26.txt AC 132 ms 28928 KB
s2_27.txt AC 106 ms 30848 KB
s2_28.txt AC 108 ms 30464 KB
s2_29.txt AC 59 ms 32768 KB
s2_30.txt AC 59 ms 32768 KB
s2_31.txt AC 97 ms 29824 KB
s2_32.txt AC 96 ms 29824 KB