Submission #1449376


Source Code Expand

#include <bits/stdc++.h>

#define mp make_pair
#define pb push_back


typedef long long ll;
typedef long long llong;
typedef long double ld;
typedef unsigned long long ull;

using namespace std;

template <typename T> void dprint(T begin, T end) {
    for (auto i = begin; i != end; i++) {
        cerr << (*i) << " ";
    }
    cerr << "\n";
}
const int MAXN = 120000;

vector<int> ea[MAXN];
vector<int> eb[MAXN];
vector<int> eds[MAXN];
int cl[MAXN];
int was[MAXN];

void add_edge(int a, int b) {
    eds[a].push_back(b);
    eds[b].push_back(a);
}

int dfs1(int v) {
    for (int i = 0; i + 1 < ea[v].size(); i += 2)
        add_edge(dfs1(ea[v][i]), dfs1(ea[v][i + 1]));
    if (ea[v].size() % 2 == 0)
        return v;
    else
        return dfs1(ea[v].back());
}

int dfs2(int v) {
    for (int i = 0; i + 1 < eb[v].size(); i += 2)
        add_edge(dfs2(eb[v][i]), dfs2(eb[v][i + 1]));
    if (eb[v].size() % 2 == 0)
        return v;
    else
        return dfs2(eb[v].back());
}

void dfs3(int v, int c) {
    was[v] = 1;
    cl[v] = c;
    for (int u: eds[v]) {
        if (was[u])
            continue;
        dfs3(u, c ^ 1);
    }
}

int n;

int main() {
    scanf("%d", &n);
    int ra = -1, rb = -1;
    for (int i = 0; i < n; ++i) {
        int p;
        scanf("%d", &p);
        --p;
        if (p == -2)
            ra = i;
        else
            ea[p].push_back(i);
    }
    for (int i = 0; i < n; ++i) {
        int p;
        scanf("%d", &p);
        --p;
        if (p == -2)
            rb = i;
        else
            eb[p].push_back(i);
    }
    for (int i = 0; i < n; ++i) {
        if (ea[i].size() % 2 != eb[i].size() % 2) {
            cout << "IMPOSSIBLE\n";
            return 0;
        }
    }
    dfs1(ra);
    dfs2(rb);
    printf("POSSIBLE\n");
    for (int i = 0; i < n; ++i) {
        if (!was[i]) {
            dfs3(i, 0);
        }
    }
    for (int i = 0; i < n; ++i) {
        if (ea[i].size() % 2 == 1) {
            printf("0 ");
        }
        else {
            if (cl[i] == 0)
                printf("-1 ");
            else
                printf("1 ");
        }
    }
    printf("\n");
    return 0;
}


Submission Info

Submission Time
Task F - Two Trees
User LHiC
Language C++14 (GCC 5.4.1)
Score 1700
Code Size 2275 Byte
Status AC
Exec Time 76 ms
Memory 18304 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:64:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
                    ^
./Main.cpp:68:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &p);
                        ^
./Main.cpp:77:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &p);
                        ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1700 / 1700
Status
AC × 3
AC × 70
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt, subtask_1_49.txt, subtask_1_50.txt, subtask_1_51.txt, subtask_1_52.txt, subtask_1_53.txt, subtask_1_54.txt, subtask_1_55.txt, subtask_1_56.txt, subtask_1_57.txt, subtask_1_58.txt, subtask_1_59.txt, subtask_1_60.txt, subtask_1_61.txt, subtask_1_62.txt, subtask_1_63.txt, subtask_1_64.txt
Case Name Status Exec Time Memory
sample_01.txt AC 4 ms 8704 KB
sample_02.txt AC 4 ms 8704 KB
sample_03.txt AC 4 ms 8704 KB
subtask_1_01.txt AC 4 ms 8704 KB
subtask_1_02.txt AC 4 ms 8704 KB
subtask_1_03.txt AC 25 ms 10880 KB
subtask_1_04.txt AC 47 ms 14208 KB
subtask_1_05.txt AC 36 ms 12032 KB
subtask_1_06.txt AC 17 ms 10368 KB
subtask_1_07.txt AC 41 ms 13184 KB
subtask_1_08.txt AC 14 ms 9212 KB
subtask_1_09.txt AC 22 ms 10368 KB
subtask_1_10.txt AC 42 ms 13184 KB
subtask_1_11.txt AC 11 ms 9472 KB
subtask_1_12.txt AC 58 ms 14976 KB
subtask_1_13.txt AC 28 ms 11264 KB
subtask_1_14.txt AC 10 ms 9600 KB
subtask_1_15.txt AC 18 ms 10496 KB
subtask_1_16.txt AC 20 ms 9720 KB
subtask_1_17.txt AC 18 ms 9984 KB
subtask_1_18.txt AC 57 ms 15232 KB
subtask_1_19.txt AC 40 ms 12416 KB
subtask_1_20.txt AC 68 ms 16512 KB
subtask_1_21.txt AC 40 ms 12928 KB
subtask_1_22.txt AC 41 ms 14976 KB
subtask_1_23.txt AC 76 ms 17280 KB
subtask_1_24.txt AC 64 ms 15360 KB
subtask_1_25.txt AC 23 ms 9848 KB
subtask_1_26.txt AC 34 ms 11516 KB
subtask_1_27.txt AC 64 ms 15488 KB
subtask_1_28.txt AC 42 ms 12416 KB
subtask_1_29.txt AC 68 ms 16000 KB
subtask_1_30.txt AC 40 ms 12800 KB
subtask_1_31.txt AC 41 ms 14976 KB
subtask_1_32.txt AC 69 ms 16256 KB
subtask_1_33.txt AC 65 ms 15360 KB
subtask_1_34.txt AC 23 ms 9848 KB
subtask_1_35.txt AC 35 ms 11516 KB
subtask_1_36.txt AC 64 ms 16512 KB
subtask_1_37.txt AC 66 ms 16384 KB
subtask_1_38.txt AC 67 ms 16384 KB
subtask_1_39.txt AC 67 ms 17024 KB
subtask_1_40.txt AC 69 ms 16256 KB
subtask_1_41.txt AC 71 ms 16896 KB
subtask_1_42.txt AC 37 ms 13816 KB
subtask_1_43.txt AC 65 ms 16384 KB
subtask_1_44.txt AC 67 ms 16640 KB
subtask_1_45.txt AC 72 ms 16896 KB
subtask_1_46.txt AC 76 ms 17152 KB
subtask_1_47.txt AC 70 ms 16256 KB
subtask_1_48.txt AC 71 ms 18304 KB
subtask_1_49.txt AC 37 ms 14072 KB
subtask_1_50.txt AC 67 ms 16128 KB
subtask_1_51.txt AC 66 ms 15872 KB
subtask_1_52.txt AC 66 ms 16768 KB
subtask_1_53.txt AC 67 ms 16128 KB
subtask_1_54.txt AC 68 ms 15872 KB
subtask_1_55.txt AC 73 ms 16384 KB
subtask_1_56.txt AC 38 ms 14072 KB
subtask_1_57.txt AC 66 ms 16384 KB
subtask_1_58.txt AC 67 ms 16256 KB
subtask_1_59.txt AC 68 ms 17152 KB
subtask_1_60.txt AC 68 ms 16256 KB
subtask_1_61.txt AC 68 ms 16256 KB
subtask_1_62.txt AC 68 ms 17408 KB
subtask_1_63.txt AC 38 ms 15992 KB
subtask_1_64.txt AC 64 ms 16128 KB