UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#188286#3317. 行走(walk)Harry27182100456ms28012kbC++11815b2023-10-03 08:16:152023-10-03 12:47:08

answer

#include<bits/stdc++.h>
using namespace std;
struct edge{int v,nxt;}e[400005];
int h[200005],f[200005][8],col[200005],u,v,n,ans,cnt;char s[200005];
const int mod=998244353;
void Add(int &x,int y){x=(x+y>=mod?x+y-mod:x+y);}
void add(int u,int v){e[++cnt]={v,h[u]};h[u]=cnt;}
void dfs(int u,int fa)
{
	f[u][1<<col[u]]=1;
	for(int i=h[u];i;i=e[i].nxt)
	{
		int v=e[i].v;
		if(v==fa)continue;
		dfs(v,u);
		for(int j=0;j<8;j++)
		{
			for(int k=0;k<8;k++)if((j|k)==7)Add(ans,1ll*f[u][j]*f[v][k]%mod);
		}
		for(int j=0;j<8;j++)Add(f[u][j|(1<<col[u])],f[v][j]);
	}
}
int main()
{
    cin.tie(0)->sync_with_stdio(0);
    cin>>n>>(s+1);
    for(int i=1;i<=n;i++)col[i]=s[i]-'a';
    for(int i=1;i<n;i++)
    {
    	cin>>u>>v;
    	add(u,v);add(v,u);
	}
	dfs(1,0);cout<<ans;
	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1376kb

input:

2000
ababbcaaacccaabbaaacaabbbbcbcaaaacaaaaacaacbaaaaaaacbcaaacabbcaaacbbcbaabacbacbacbcbaacaacbbcab...

output:

1984050

result:

ok single line: '1984050'

Test #2:

score: 10
Accepted
time: 0ms
memory: 1376kb

input:

2000
accbccbcaacbabbbcbcccbacbccabbccccbccccaccccccbcaccabbcbbbcbccaaccbcccacabbaacbbcabccbaaccbabbb...

output:

1982714

result:

ok single line: '1982714'

Test #3:

score: 10
Accepted
time: 0ms
memory: 1380kb

input:

2000
cccacccbabaacaaacccbbbabcabacabbcbcabacbbaaccaabbcabbbaabbaaababbbabcbcabbccbabacbbcbbbbbbaccbb...

output:

1983256

result:

ok single line: '1983256'

Test #4:

score: 10
Accepted
time: 58ms
memory: 28012kb

input:

200000
aabaaccabcbbabacbcacbaaaccbbbacacacacabbbabcbaabbabcbbbcbbbacababababcaccabcaacbccbaabbbcccbb...

output:

34314841

result:

ok single line: '34314841'

Test #5:

score: 10
Accepted
time: 46ms
memory: 28012kb

input:

200000
bcaaabccbccbaaacabccaaacabcccbccabacbbbbccbacaacccacbaabcabccbcabcbaabaabababbbbcbacacbbaabba...

output:

34315707

result:

ok single line: '34315707'

Test #6:

score: 10
Accepted
time: 60ms
memory: 28008kb

input:

200000
babcaaccaabccbbccbbabcbaccbababbcaacbaccccccabacacbcccabbccbcccacaaabccbbbabbabbcccbaaabcaaaa...

output:

34309683

result:

ok single line: '34309683'

Test #7:

score: 10
Accepted
time: 69ms
memory: 12492kb

input:

200000
abbaaaabbabaabaaabbbaababbabaabaabababaabaababbaaaaababbabaabbabbbbbbbbbababbbaabaaabaabbbbab...

output:

199998

result:

ok single line: '199998'

Test #8:

score: 10
Accepted
time: 76ms
memory: 12480kb

input:

200000
babababbbbbbababaaabaaabaaababbbbabbaaaabaaaabbbbbbaaaaaabbabbabaabaabbaabbbbabbbaabbaababaab...

output:

799971

result:

ok single line: '799971'

Test #9:

score: 10
Accepted
time: 78ms
memory: 12464kb

input:

200000
aabccccabaabcbabcbaabbaccaaaccbcbbbbaccabbcaabbaababbbbacacbcccabcbbbccababccbccbccaaaabccacb...

output:

33543853

result:

ok single line: '33543853'

Test #10:

score: 10
Accepted
time: 69ms
memory: 12504kb

input:

200000
abaabbabacabaabaccbbabcbabbaababbbccabbaacacbcbbcbcacccabbbaccaaccaaaccbabbaabbcbcbaaaaabbbcb...

output:

33539915

result:

ok single line: '33539915'

Extra Test:

score: 0
Extra Test Passed