为什么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;

}

全部评论

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务