Submission #1447956


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

const int N = 1234567;

vector <int> g[N], h[N];
int x[N], color[N];
int zero[N];

int dfs(int v) {
  vector <int> children;
  for (int u : g[v]) {
    children.push_back(dfs(u));
  }
  while ((int) children.size() >= 2) {
    int a = children.back();
    children.pop_back();
    int b = children.back();
    children.pop_back();
    h[a].push_back(b);
    h[b].push_back(a);
  }
  if (children.empty()) {
    return v;
  } else {
    zero[v]++;
    return children[0];
  }
}

int main() {
  int n;
  scanf("%d", &n);
  for (int it = 0; it < 2; it++) {
    for (int i = 0; i < n; i++) {
      g[i].clear();
    }
    int root = -1;
    for (int i = 0; i < n; i++) {
      int x;
      scanf("%d", &x);
      if (x == -1) {
        root = i;
      } else {
        x--;
        g[x].push_back(i);
      }
    }
    dfs(root);
  }
  for (int i = 0; i < n; i++) {
    if (zero[i] == 1) {
      puts("IMPOSSIBLE");
      return 0;
    }
  }
  for (int i = 0; i < n; i++) {
    color[i] = 0;
  }
  for (int i = 0; i < n; i++) {
    if (color[i] == 0 && zero[i] == 0) {
      int b = 0, e = 1;
      x[0] = i;
      color[i] = 1;
      while (b < e) {
        for (int j : h[x[b]]) {
          if (color[j] == 0) {
            color[j] = -color[x[b]];
            x[e++] = j;
          }
        }
        b++;
      }
    }
  }
  puts("POSSIBLE");
  for (int i = 0; i < n; i++) {
    if (i > 0) putchar(' ');
    printf("%d", color[i]);
  }
  printf("\n");
  return 0;
}

Submission Info

Submission Time
Task F - Two Trees
User tourist
Language C++14 (GCC 5.4.1)
Score 1700
Code Size 1599 Byte
Status AC
Exec Time 96 ms
Memory 70784 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:34:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &n);
                  ^
./Main.cpp:42:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d", &x);
                      ^

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 21 ms 62336 KB
sample_02.txt AC 19 ms 58240 KB
sample_03.txt AC 21 ms 62336 KB
subtask_1_01.txt AC 20 ms 58240 KB
subtask_1_02.txt AC 20 ms 58240 KB
subtask_1_03.txt AC 54 ms 61696 KB
subtask_1_04.txt AC 67 ms 65792 KB
subtask_1_05.txt AC 72 ms 63488 KB
subtask_1_06.txt AC 36 ms 63616 KB
subtask_1_07.txt AC 61 ms 65280 KB
subtask_1_08.txt AC 36 ms 60716 KB
subtask_1_09.txt AC 47 ms 61576 KB
subtask_1_10.txt AC 61 ms 65536 KB
subtask_1_11.txt AC 31 ms 59392 KB
subtask_1_12.txt AC 76 ms 66432 KB
subtask_1_13.txt AC 60 ms 62336 KB
subtask_1_14.txt AC 28 ms 63104 KB
subtask_1_15.txt AC 37 ms 63616 KB
subtask_1_16.txt AC 45 ms 62264 KB
subtask_1_17.txt AC 41 ms 60836 KB
subtask_1_18.txt AC 76 ms 66796 KB
subtask_1_19.txt AC 78 ms 64000 KB
subtask_1_20.txt AC 92 ms 67072 KB
subtask_1_21.txt AC 80 ms 69888 KB
subtask_1_22.txt AC 68 ms 67584 KB
subtask_1_23.txt AC 88 ms 69760 KB
subtask_1_24.txt AC 80 ms 66688 KB
subtask_1_25.txt AC 50 ms 62960 KB
subtask_1_26.txt AC 66 ms 63800 KB
subtask_1_27.txt AC 82 ms 67356 KB
subtask_1_28.txt AC 78 ms 63872 KB
subtask_1_29.txt AC 86 ms 67200 KB
subtask_1_30.txt AC 79 ms 67200 KB
subtask_1_31.txt AC 71 ms 69888 KB
subtask_1_32.txt AC 89 ms 68736 KB
subtask_1_33.txt AC 81 ms 66688 KB
subtask_1_34.txt AC 50 ms 62960 KB
subtask_1_35.txt AC 66 ms 63800 KB
subtask_1_36.txt AC 82 ms 67356 KB
subtask_1_37.txt AC 86 ms 67072 KB
subtask_1_38.txt AC 86 ms 67200 KB
subtask_1_39.txt AC 86 ms 67584 KB
subtask_1_40.txt AC 88 ms 68352 KB
subtask_1_41.txt AC 96 ms 69248 KB
subtask_1_42.txt AC 59 ms 67440 KB
subtask_1_43.txt AC 81 ms 67356 KB
subtask_1_44.txt AC 86 ms 67200 KB
subtask_1_45.txt AC 85 ms 67328 KB
subtask_1_46.txt AC 87 ms 67712 KB
subtask_1_47.txt AC 87 ms 68224 KB
subtask_1_48.txt AC 88 ms 70784 KB
subtask_1_49.txt AC 60 ms 67440 KB
subtask_1_50.txt AC 84 ms 67356 KB
subtask_1_51.txt AC 86 ms 67072 KB
subtask_1_52.txt AC 86 ms 67200 KB
subtask_1_53.txt AC 87 ms 67712 KB
subtask_1_54.txt AC 87 ms 67968 KB
subtask_1_55.txt AC 89 ms 68736 KB
subtask_1_56.txt AC 59 ms 67440 KB
subtask_1_57.txt AC 81 ms 67356 KB
subtask_1_58.txt AC 85 ms 67072 KB
subtask_1_59.txt AC 86 ms 67328 KB
subtask_1_60.txt AC 86 ms 67712 KB
subtask_1_61.txt AC 87 ms 68224 KB
subtask_1_62.txt AC 88 ms 69760 KB
subtask_1_63.txt AC 60 ms 67440 KB
subtask_1_64.txt AC 82 ms 67356 KB