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