竞赛讨论区 > E题spj有问题吧
头像
帅帅坤
发布于 02-25 21:24
+ 关注

E题spj有问题吧

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

const int MAXN = 100005;
vector<int> adj[MAXN];
char result[MAXN];
char input[MAXN];

void dfs(int u, int p, char c) {
    result[u] = c;
    for (int v : adj[u]) {
        if (v != p) {
           
            if (c == 'd') dfs(v, u, 'p');
            else dfs(v, u, 'd');
        }
    }
}

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> input[i];
    }
    for (int i = 1; i < n; ++i) {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    dfs(1, 0, 'd');

    for (int u = 1; u <= n; ++u) {
        for (int v : adj[u]) {
            if (result[u] == result[v] && input[u] != '?' && input[v] != '?') {
                cout << -1 << endl;
                return 0;
            }
        }
    }

    for (int i = 1; i <= n; ++i) {
        cout << result[i];
    }
    cout << endl;

    return 0;
}

这也能过?

全部评论

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

等你来战

查看全部

热门推荐