竞赛讨论区 > 为什么E题通过率是93.33啊,有没有好心人告诉我哪里出了问
头像
1188_
发布于 02-26 17:59
+ 关注

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

}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐