为什么E题通过率是93.33啊,有没有好心人告诉我哪里出了问
#include <bits/stdc++.h>
using namespace std;
#define ll long long
char f[1000001];
vector<int>k[1000001];
int flag;
bool bfs(int pos,int pre)
{
char c;
if(f[pos]=='d')
{
c='p';
}
else
{
c='d';
}
for(int i=0;i<k[pos].size();i++)
{
if(k[pos][i]==pre)
{
continue;
}
if(f[k[pos][i]]=='?')
{
f[k[pos][i]]=c;
}
else if(f[k[pos][i]]!=c)
{
return false;
}
bfs(k[pos][i],pos);
}
return true;
}
int main()
{
ios::sync_with_stdio(false);
int n;
cin>>n;
int pos;
for(int i=1;i<=n;i++)
{
cin>>f[i];
}
for(int i=1;i<=n;i++)
{
if(f[i]!='?')
{
pos=i;
flag=1;
break;
}
}
if(flag==0)
{
f[1]='p';
pos=1;
}
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
k[x].push_back(y);
k[y].push_back(x);
}
if(bfs(pos,0))
{
for(int i=1;i<=n;i++)
{
cout<<f[i];
}
}
else
{
cout<<-1;
}
return 0;
}