ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#188286 | #3317. 行走(walk) | Harry27182 | 100 | 456ms | 28012kb | C++11 | 815b | 2023-10-03 08:16:15 | 2023-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