Submission #60285195
Source Code Expand
#include<bits/stdc++.h> #include"atcoder/all" using namespace std; using namespace atcoder; #define rep(i,n) for(int i=0;i<(n);i++) #define all(a) a.begin(),a.end() typedef long long ll; typedef vector<ll> vi; typedef pair<ll,ll> P; const ll mod=1000000007; const ll inf=1ll<<61; typedef modint1000000007 mi; char c[100005]; vector<int>G[100005]; mi dp[3][100005]; void dfs(int now,int par){ mi all_children=1,same=1; for(auto e:G[now]){ if(e==par)continue; dfs(e,now); all_children*=(dp[0][e]+dp[1][e]+2*dp[2][e]); if(c[now]=='a')same*=dp[0][e]+dp[2][e]; else same*=dp[1][e]+dp[2][e]; } all_children-=same; dp[c[now]-'a'][now]=same; dp[2][now]=all_children; } int main(){ int n;cin>>n; rep(i,n)cin>>c[i]; rep(i,n-1){ int a,b; cin>>a>>b; a--;b--; G[a].push_back(b); G[b].push_back(a); } dfs(0,-1); cout<<dp[2][0].val()<<endl; }
Submission Info
Submission Time | |
---|---|
Task | 073 - We Need Both a and b(★5) |
User | Rho17 |
Language | C++ 20 (gcc 12.2) |
Score | 5 |
Code Size | 905 Byte |
Status | AC |
Exec Time | 52 ms |
Memory | 10556 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 5 / 5 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 10_max_00.txt, 10_max_01.txt, 10_max_02.txt, 10_max_03.txt, 10_max_04.txt, 10_small_00.txt, 10_small_01.txt, 10_small_02.txt, 10_small_03.txt, 10_small_04.txt, 10_small_05.txt, 10_small_06.txt, 10_small_07.txt, 10_small_08.txt, 10_small_09.txt, 10_small_10.txt, 10_small_11.txt, 10_small_12.txt, 10_small_13.txt, 10_small_14.txt, 10_small_15.txt, 10_small_16.txt, 10_small_17.txt, 10_small_18.txt, 10_small_19.txt, 11_large_00.txt, 11_large_01.txt, 11_large_02.txt, 11_large_03.txt, 11_large_04.txt, 11_large_05.txt, 11_large_06.txt, 11_large_07.txt, 11_large_08.txt, 11_large_09.txt, 20_uni_00.txt, 20_uni_01.txt, 30_hand_00.txt, 30_hand_01.txt, 30_hand_02.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 3 ms | 4680 KiB |
00_sample_01.txt | AC | 2 ms | 4800 KiB |
00_sample_02.txt | AC | 1 ms | 4732 KiB |
10_max_00.txt | AC | 52 ms | 10476 KiB |
10_max_01.txt | AC | 51 ms | 10372 KiB |
10_max_02.txt | AC | 51 ms | 10308 KiB |
10_max_03.txt | AC | 52 ms | 10520 KiB |
10_max_04.txt | AC | 51 ms | 10360 KiB |
10_small_00.txt | AC | 2 ms | 4708 KiB |
10_small_01.txt | AC | 2 ms | 4840 KiB |
10_small_02.txt | AC | 2 ms | 4844 KiB |
10_small_03.txt | AC | 2 ms | 4664 KiB |
10_small_04.txt | AC | 1 ms | 4692 KiB |
10_small_05.txt | AC | 1 ms | 4688 KiB |
10_small_06.txt | AC | 2 ms | 4704 KiB |
10_small_07.txt | AC | 2 ms | 4636 KiB |
10_small_08.txt | AC | 1 ms | 4692 KiB |
10_small_09.txt | AC | 1 ms | 4704 KiB |
10_small_10.txt | AC | 2 ms | 4840 KiB |
10_small_11.txt | AC | 2 ms | 4676 KiB |
10_small_12.txt | AC | 2 ms | 4660 KiB |
10_small_13.txt | AC | 2 ms | 4660 KiB |
10_small_14.txt | AC | 2 ms | 4804 KiB |
10_small_15.txt | AC | 2 ms | 4804 KiB |
10_small_16.txt | AC | 2 ms | 4848 KiB |
10_small_17.txt | AC | 2 ms | 4700 KiB |
10_small_18.txt | AC | 1 ms | 4736 KiB |
10_small_19.txt | AC | 1 ms | 4688 KiB |
11_large_00.txt | AC | 2 ms | 4740 KiB |
11_large_01.txt | AC | 2 ms | 4772 KiB |
11_large_02.txt | AC | 2 ms | 4780 KiB |
11_large_03.txt | AC | 2 ms | 4816 KiB |
11_large_04.txt | AC | 2 ms | 4708 KiB |
11_large_05.txt | AC | 2 ms | 4712 KiB |
11_large_06.txt | AC | 2 ms | 4896 KiB |
11_large_07.txt | AC | 2 ms | 4912 KiB |
11_large_08.txt | AC | 2 ms | 4784 KiB |
11_large_09.txt | AC | 2 ms | 4748 KiB |
20_uni_00.txt | AC | 52 ms | 10328 KiB |
20_uni_01.txt | AC | 52 ms | 10556 KiB |
30_hand_00.txt | AC | 2 ms | 4740 KiB |
30_hand_01.txt | AC | 2 ms | 4644 KiB |
30_hand_02.txt | AC | 1 ms | 4688 KiB |