# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
232815 |
2020-05-18T09:51:04 Z |
shayan_p |
Zagrade (COI17_zagrade) |
C++14 |
|
1754 ms |
47756 KB |
// Never let them see you bleed...
#include<bits/stdc++.h>
#define F first
#define S second
#define PB push_back
#define sz(s) int((s).size())
#define bit(n,k) (((n)>>(k))&1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 3e5 + 10, mod = 1e9 + 7, inf = 1e9 + 10;
vector<int> v[maxn];
int a[maxn], SZ[maxn];
bool mark[maxn];
void dfsSZ(int u, int par = -1){
SZ[u] = 1;
for(int y : v[u]){
if(!mark[y] && par != y)
dfsSZ(y, u), SZ[u]+= SZ[y];
}
}
int dfsCenter(int u, int N, int par = -1){
for(int y : v[u]){
if(!mark[y] && par != y && SZ[y] > N)
return dfsCenter(y, N, u);
}
return u;
}
int cnt[2 * maxn];
int val[maxn], pr[maxn], up[maxn];
ll ANS;
void calc(int u, int bad, int task, int sum, int par = 0){
pr[u] = par;
val[u] = val[par] + a[u];
up[u] = (a[u] == bad ? u : up[pr[up[par]]]);
if(task == 0)
cnt[maxn + val[u]] = 0;
if(up[u] == 0){
if(task == 1)
cnt[maxn + val[u]]++;
if(task == -1)
ANS+= cnt[maxn + sum - val[u]];
}
for(int y : v[u])
if(!mark[y] && par != y)
calc(y, bad, task, sum, u);
}
void solve(int r){
dfsSZ(r);
r = dfsCenter(r, SZ[r]/2);
mark[r] = 1;
if(a[r] == 1)
cnt[maxn]++;
for(int u : v[r]){
if(mark[u])
continue;
calc(u, 1, -1, -a[r]);
calc(u, -1, 1, 0);
}
if(a[r] == 1)
cnt[maxn] = 0;
for(int u : v[r]){
if(mark[u])
continue;
calc(u, -1, 0, 0);
}
if(a[r] == -1)
cnt[maxn]++;
for(int u : v[r]){
if(mark[u])
continue;
calc(u, -1, -1, -a[r]);
calc(u, 1, 1, 0);
}
if(a[r] == -1)
cnt[maxn] = 0;
for(int u : v[r]){
if(mark[u])
continue;
calc(u, 1, 0, 0);
}
for(int u : v[r]){
if(!mark[u])
solve(u);
}
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie();
int n;
cin >> n;
string s;
cin >> s;
for(int i = 0; i < n; i++){
a[i+1] = (s[i] == '(' ? 1 : -1);
}
for(int i = 0; i < n-1; i++){
int a, b;
cin >> a >> b;
v[a].PB(b);
v[b].PB(a);
}
solve(1);
return cout << ANS << endl, 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
7424 KB |
Output is correct |
2 |
Correct |
9 ms |
7424 KB |
Output is correct |
3 |
Correct |
10 ms |
7424 KB |
Output is correct |
4 |
Correct |
10 ms |
7424 KB |
Output is correct |
5 |
Correct |
10 ms |
7552 KB |
Output is correct |
6 |
Correct |
10 ms |
7424 KB |
Output is correct |
7 |
Correct |
9 ms |
7424 KB |
Output is correct |
8 |
Correct |
10 ms |
7552 KB |
Output is correct |
9 |
Correct |
10 ms |
7424 KB |
Output is correct |
10 |
Correct |
9 ms |
7424 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
697 ms |
46348 KB |
Output is correct |
2 |
Correct |
673 ms |
46628 KB |
Output is correct |
3 |
Correct |
694 ms |
46476 KB |
Output is correct |
4 |
Correct |
688 ms |
46480 KB |
Output is correct |
5 |
Correct |
699 ms |
46352 KB |
Output is correct |
6 |
Correct |
695 ms |
46516 KB |
Output is correct |
7 |
Correct |
693 ms |
46344 KB |
Output is correct |
8 |
Correct |
687 ms |
46344 KB |
Output is correct |
9 |
Correct |
689 ms |
46348 KB |
Output is correct |
10 |
Correct |
580 ms |
47496 KB |
Output is correct |
11 |
Correct |
588 ms |
46220 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
7424 KB |
Output is correct |
2 |
Correct |
9 ms |
7424 KB |
Output is correct |
3 |
Correct |
10 ms |
7424 KB |
Output is correct |
4 |
Correct |
10 ms |
7424 KB |
Output is correct |
5 |
Correct |
10 ms |
7552 KB |
Output is correct |
6 |
Correct |
10 ms |
7424 KB |
Output is correct |
7 |
Correct |
9 ms |
7424 KB |
Output is correct |
8 |
Correct |
10 ms |
7552 KB |
Output is correct |
9 |
Correct |
10 ms |
7424 KB |
Output is correct |
10 |
Correct |
9 ms |
7424 KB |
Output is correct |
11 |
Correct |
697 ms |
46348 KB |
Output is correct |
12 |
Correct |
673 ms |
46628 KB |
Output is correct |
13 |
Correct |
694 ms |
46476 KB |
Output is correct |
14 |
Correct |
688 ms |
46480 KB |
Output is correct |
15 |
Correct |
699 ms |
46352 KB |
Output is correct |
16 |
Correct |
695 ms |
46516 KB |
Output is correct |
17 |
Correct |
693 ms |
46344 KB |
Output is correct |
18 |
Correct |
687 ms |
46344 KB |
Output is correct |
19 |
Correct |
689 ms |
46348 KB |
Output is correct |
20 |
Correct |
580 ms |
47496 KB |
Output is correct |
21 |
Correct |
588 ms |
46220 KB |
Output is correct |
22 |
Correct |
1747 ms |
27760 KB |
Output is correct |
23 |
Correct |
1724 ms |
27660 KB |
Output is correct |
24 |
Correct |
1742 ms |
27788 KB |
Output is correct |
25 |
Correct |
1754 ms |
27700 KB |
Output is correct |
26 |
Correct |
834 ms |
33804 KB |
Output is correct |
27 |
Correct |
835 ms |
30860 KB |
Output is correct |
28 |
Correct |
853 ms |
29900 KB |
Output is correct |
29 |
Correct |
571 ms |
47500 KB |
Output is correct |
30 |
Correct |
589 ms |
47756 KB |
Output is correct |
31 |
Correct |
129 ms |
27268 KB |
Output is correct |
32 |
Correct |
591 ms |
46496 KB |
Output is correct |