Submission #1917439
Source Code Expand
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
inline int getint()
{
/* static char c;
while ((c = getchar()) < '0' || c > '9');
int res = c - '0';
while ((c = getchar()) >= '0' && c <= '9')
res = res * 10 + c - '0';
return res;*/
int x;
cin >> x;
return x;
}
const int MaxN = 100000;
const int MaxNV = MaxN * 2 + 1;
const int MaxNE = MaxNV + MaxN;
int n;
int r1, r2;
int parity[MaxNV + 1];
struct halfEdge
{
int v;
bool used;
halfEdge *next;
};
halfEdge adj_pool[MaxNE * 2], *adj_tail = adj_pool;
halfEdge *adj[MaxNV + 1];
inline halfEdge *oppo(const halfEdge *e)
{
return adj_pool + ((e - adj_pool) ^ 1);
}
inline void addEdge(const int &u, const int &v)
{
adj_tail->v = v, adj_tail->next = adj[u];
adj[u] = adj_tail++;
}
inline void build(int &root, int d)
{
for (int u = 1; u <= n; ++u)
{
int v = getint();
if (v == -1)
root = u + d;
else
{
int p = u + d, q = v + d;
addEdge(p, q);
addEdge(q, p);
}
}
}
void dfs(const int &u, const int &fa)
{
parity[u] = 1;
for (halfEdge *e = adj[u]; e; e = e->next)
if (e->v != fa)
{
dfs(e->v, u);
parity[u] ^= 1;
}
}
int tour_n = 0;
int tour[MaxNE * 2 + 1];
void euler(const int &u)
{
halfEdge *&e = adj[u];
while (e)
{
if (e->used)
e = e->next;
else
{
e->used = oppo(e)->used = true;
euler(e->v);
}
}
tour[++tour_n] = u;
}
int lab[MaxN + 1];
int main()
{
cin >> n;
build(r1, 0), dfs(r1, 0);
build(r2, n), dfs(r2, 0);
for (int u = 1; u <= n; ++u)
if (parity[u] != parity[u + n])
{
puts("IMPOSSIBLE");
return 0;
}
puts("POSSIBLE");
int sv = n * 2 + 1;
addEdge(r1, sv), addEdge(sv, r1);
addEdge(r2, sv), addEdge(sv, r2);
for (int u = 1; u <= n; ++u)
if (parity[u])
{
addEdge(u, u + n);
addEdge(u + n, u);
}
euler(sv);
for (int u = 1; u <= n; ++u)
if (parity[u])
lab[u] = -1;
for (int i = 1; i < tour_n; ++i)
{
int u = tour[i];
if (u <= n && tour[i + 1] == u + n)
lab[u] = 1;
}
for (int u = 1; u <= n; ++u)
printf("%d ", lab[u]);
puts("");
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Two Trees |
| User | InvUsr |
| Language | C++14 (GCC 5.4.1) |
| Score | 1700 |
| Code Size | 2255 Byte |
| Status | AC |
| Exec Time | 133 ms |
| Memory | 23808 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1700 / 1700 | ||||
| Status |
|
|
| 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 | 2 ms | 6400 KiB |
| sample_02.txt | AC | 2 ms | 6400 KiB |
| sample_03.txt | AC | 2 ms | 6400 KiB |
| subtask_1_01.txt | AC | 2 ms | 6400 KiB |
| subtask_1_02.txt | AC | 2 ms | 6400 KiB |
| subtask_1_03.txt | AC | 48 ms | 8448 KiB |
| subtask_1_04.txt | AC | 81 ms | 20096 KiB |
| subtask_1_05.txt | AC | 71 ms | 10624 KiB |
| subtask_1_06.txt | AC | 27 ms | 11008 KiB |
| subtask_1_07.txt | AC | 66 ms | 11648 KiB |
| subtask_1_08.txt | AC | 41 ms | 8448 KiB |
| subtask_1_09.txt | AC | 46 ms | 8448 KiB |
| subtask_1_10.txt | AC | 70 ms | 17280 KiB |
| subtask_1_11.txt | AC | 17 ms | 6400 KiB |
| subtask_1_12.txt | AC | 96 ms | 21632 KiB |
| subtask_1_13.txt | AC | 57 ms | 10496 KiB |
| subtask_1_14.txt | AC | 14 ms | 7680 KiB |
| subtask_1_15.txt | AC | 28 ms | 8960 KiB |
| subtask_1_16.txt | AC | 61 ms | 10496 KiB |
| subtask_1_17.txt | AC | 37 ms | 8448 KiB |
| subtask_1_18.txt | AC | 98 ms | 22272 KiB |
| subtask_1_19.txt | AC | 79 ms | 12672 KiB |
| subtask_1_20.txt | AC | 108 ms | 23168 KiB |
| subtask_1_21.txt | AC | 80 ms | 14592 KiB |
| subtask_1_22.txt | AC | 83 ms | 14592 KiB |
| subtask_1_23.txt | AC | 111 ms | 23040 KiB |
| subtask_1_24.txt | AC | 102 ms | 14336 KiB |
| subtask_1_25.txt | AC | 76 ms | 12672 KiB |
| subtask_1_26.txt | AC | 80 ms | 12672 KiB |
| subtask_1_27.txt | AC | 113 ms | 23296 KiB |
| subtask_1_28.txt | AC | 80 ms | 12672 KiB |
| subtask_1_29.txt | AC | 110 ms | 23040 KiB |
| subtask_1_30.txt | AC | 81 ms | 13824 KiB |
| subtask_1_31.txt | AC | 86 ms | 15360 KiB |
| subtask_1_32.txt | AC | 117 ms | 23040 KiB |
| subtask_1_33.txt | AC | 104 ms | 14336 KiB |
| subtask_1_34.txt | AC | 76 ms | 12800 KiB |
| subtask_1_35.txt | AC | 80 ms | 12672 KiB |
| subtask_1_36.txt | AC | 115 ms | 23296 KiB |
| subtask_1_37.txt | AC | 118 ms | 23168 KiB |
| subtask_1_38.txt | AC | 115 ms | 23168 KiB |
| subtask_1_39.txt | AC | 115 ms | 23168 KiB |
| subtask_1_40.txt | AC | 120 ms | 23040 KiB |
| subtask_1_41.txt | AC | 126 ms | 22784 KiB |
| subtask_1_42.txt | AC | 93 ms | 23808 KiB |
| subtask_1_43.txt | AC | 129 ms | 23296 KiB |
| subtask_1_44.txt | AC | 132 ms | 23168 KiB |
| subtask_1_45.txt | AC | 119 ms | 23168 KiB |
| subtask_1_46.txt | AC | 133 ms | 23168 KiB |
| subtask_1_47.txt | AC | 128 ms | 23040 KiB |
| subtask_1_48.txt | AC | 132 ms | 22784 KiB |
| subtask_1_49.txt | AC | 92 ms | 23808 KiB |
| subtask_1_50.txt | AC | 125 ms | 23296 KiB |
| subtask_1_51.txt | AC | 119 ms | 23168 KiB |
| subtask_1_52.txt | AC | 115 ms | 23168 KiB |
| subtask_1_53.txt | AC | 116 ms | 23168 KiB |
| subtask_1_54.txt | AC | 108 ms | 23040 KiB |
| subtask_1_55.txt | AC | 109 ms | 22912 KiB |
| subtask_1_56.txt | AC | 92 ms | 23808 KiB |
| subtask_1_57.txt | AC | 106 ms | 23296 KiB |
| subtask_1_58.txt | AC | 112 ms | 23168 KiB |
| subtask_1_59.txt | AC | 108 ms | 23168 KiB |
| subtask_1_60.txt | AC | 112 ms | 23168 KiB |
| subtask_1_61.txt | AC | 109 ms | 23168 KiB |
| subtask_1_62.txt | AC | 108 ms | 22528 KiB |
| subtask_1_63.txt | AC | 92 ms | 23808 KiB |
| subtask_1_64.txt | AC | 106 ms | 23296 KiB |