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
AC × 3
AC × 43
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