Logo
(追記) (追記ここまで)

29748번 - Beech Tree 서브태스크다국어언어 제한함수 구현

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB88171620.253%

문제

Vétyem Woods is a famous woodland with lots of colorful trees. One of the oldest and tallest beech trees is called Ős Vezér.

The tree Ős Vezér can be modeled as a set of $N$ nodes and $N-1$ edges. Nodes are numbered from 0ドル$ to $N-1$ and edges are numbered from 1ドル$ to $N-1$. Each edge connects two distinct nodes of the tree. Specifically, edge $i$ (1ドル \le i \lt N$) connects node $i$ to node $P[i],ドル where 0ドル \le P[i] \lt i$. Node $P[i]$ is called the parent of node $i,ドル and node $i$ is called a child of node $P[i]$.

Each edge has a color. There are $M$ possible edge colors numbered from 1ドル$ to $M$. The color of edge $i$ is $C[i]$. Different edges may have the same color.

Note that in the definitions above, the case $i = 0$ does not correspond to an edge of the tree. For convenience, we let $P[0] = -1$ and $C[0] = 0$.

For example, suppose that Ős Vezér has $N = 18$ nodes and $M = 3$ possible edge colors, with 17ドル$ edges described by connections $P = [-1, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 10, 11, 11]$ and colors $C = [0, 1, 2, 3, 1, 2, 3, 1, 3, 3, 2, 1, 1, 2, 2, 1, 2, 3]$. The tree is displayed in the following figure:

Árpád is a talented forester who likes to study specific parts of the tree called subtrees. For each $r$ such that 0ドル \le r \lt N,ドル the subtree of node $r$ is the set $T(r)$ of nodes with the following properties:

  • Node $r$ belongs to $T(r)$.
  • Whenever a node $x$ belongs to $T(r),ドル all children of $x$ also belong to $T(r)$.
  • No other nodes belong to $T(r)$.

The size of the set $T(r)$ is denoted as $|T(r)|$.

Árpád recently discovered a complicated but interesting subtree property. Árpád's discovery involved a lot of playing with pen and paper, and he suspects you might need to do the same to understand it. He will also show you multiple examples you can then analyze in detail.

Suppose we have a fixed $r$ and a permutation $v_0, v_1, \ldots, v_{|T(r)|-1}$ of the nodes in the subtree $T(r)$.

For each $i$ such that 1ドル \le i \lt |T(r)|,ドル let $f(i)$ be the number of times the color $C[v_i]$ appears in the following sequence of $i-1$ colors: $C[v_1], C[v_2], \ldots, C[v_{i-1}]$.

(Note that $f(1)$ is always 0ドル$ because the sequence of colors in its definition is empty.)

The permutation $v_0, v_1, \ldots, v_{|T(r)|-1}$ is a beautiful permutation if and only if all the following properties hold:

  • $v_0 = r$.
  • For each $i$ such that 1ドル \le i \lt |T(r)|,ドル the parent of node $v_i$ is node $v_{f(i)}$.

For any $r$ such that 0ドル \le r \lt N,ドル the subtree $T(r)$ is a beautiful subtree if and only if there exists a beautiful permutation of the nodes in $T(r)$. Note that according to the definition every subtree which consists of a single node is beautiful.

Consider the example tree above. It can be shown that the subtrees $T(0)$ and $T(3)$ of this tree are not beautiful. The subtree $T(14)$ is beautiful, as it consists of a single node. Below, we will show that the subtree $T(1)$ is also beautiful.

Consider the sequence of distinct integers $[v_0, v_1, v_2, v_3, v_4, v_5, v_6] = [1, 4, 5, 12, 13, 6, 14]$. This sequence is a permutation of the nodes in $T(1)$. The figure below depicts this permutation. The labels attached to the nodes are the indices at which those nodes appear in the permutation.

Clearly, the above sequence is a permutation of the nodes in $T(1)$. We will now verify that it is beautiful.

  • $v_0 = 1$.
  • $f(1) = 0$ since $C[v_1] = C[4] = 1$ appears 0ドル$ times in the sequence $[]$.
    • Correspondingly, the parent of $v_1$ is $v_0$. That is, the parent of node 4ドル$ is node 1ドル$. (Formally, $P[4] = 1$.)
  • $f(2) = 0$ since $C[v_2] = C[5] = 2$ appears 0ドル$ times in the sequence $[1]$.
    • Correspondingly, the parent of $v_2$ is $v_0$. That is, the parent of 5ドル$ is 1ドル$.
  • $f(3) = 1$ since $C[v_3] = C[12] = 1$ appears 1ドル$ time in the sequence $[1, 2]$.
    • Correspondingly, the parent of $v_3$ is $v_1$. That is, the parent of 12ドル$ is 4ドル$.
  • $f(4) = 1$ since $C[v_4] = C[13] = 2$ appears 1ドル$ time in the sequence $[1, 2, 1]$.
    • Correspondingly, the parent of $v_4$ is $v_1$. That is, the parent of 13ドル$ is 4ドル$.
  • $f(5) = 0$ since $C[v_5] = C[6] = 3$ appears 0ドル$ times in the sequence $[1, 2, 1, 2]$.
    • Correspondingly, the parent of $v_5$ is $v_0$. That is, the parent of 6ドル$ is 1ドル$.
  • $f(6) = 2$ since $C[v_6] = C[14] = 2$ appears 2ドル$ times in the sequence $[1, 2, 1, 2, 3]$.
    • Correspondingly, the parent of $v_6$ is $v_2$. That is, the parent of 14ドル$ is 5ドル

As we could find a beautiful permutation of the nodes in $T(1),ドル the subtree $T(1)$ is indeed beautiful.

Your task is to help Árpád decide for every subtree of Ős Vezér whether it is beautiful.

구현

You should implement the following procedure.

int[] beechtree(int N, int M, int[] P, int[] C)
  • $N$: the number of nodes in the tree.
  • $M$: the number of possible edge colors.
  • $P,ドル $C$: arrays of length $N$ describing the edges of the tree.
  • This procedure should return an array $b$ of length $N$. For each $r$ such that 0ドル \le r \lt N,ドル $b[r]$ should be 1ドル$ if $T(r)$ is beautiful, and 0ドル$ otherwise.
  • This procedure is called exactly once for each test case.

예제 1

Consider the following call:

beechtree(4, 2, [-1, 0, 0, 0], [0, 1, 1, 2])

The tree is displayed in the following figure:

$T(1),ドル $T(2),ドル and $T(3)$ each consist of a single node and are therefore beautiful. $T(0)$ is not beautiful. Therefore, the procedure should return $[0, 1, 1, 1]$.

예제 2

Consider the following call:

beechtree(18, 3, 
 [-1, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 10, 11, 11],
 [0, 1, 2, 3, 1, 2, 3, 1, 3, 3, 2, 1, 1, 2, 2, 1, 2, 3])

This example is illustrated in the task description above.

The procedure should return $[0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]$.

예제 3

Consider the following call:

beechtree(7, 2, [-1, 0, 1, 1, 0, 4, 5], [0, 1, 1, 2, 2, 1, 1])

This example is illustrated in the following figure.

$T(0)$ is the only subtree that is not beautiful. The procedure should return $[0, 1, 1, 1, 1, 1, 1]$.

입력

출력

제한

  • 3ドル \le N \le 200,000円$
  • 2ドル \le M \le 200,000円$
  • 0ドル \le P[i] \lt i$ (for each $i$ such that 1ドル \le i \lt N$)
  • 1ドル \le C[i] \le M$ (for each $i$ such that 1ドル \le i \lt N$)
  • $P[0] = -1$ and $C[0] = 0$

서브태스크

번호배점제한
19

$N \le 8$ and $M \le 500$

25

Edge $i$ connects node $i$ to node $i-1$. That is, for each $i$ such that 1ドル \le i \lt N,ドル $P[i] = i-1$.

39

Each node other than node 0ドル$ is either connected to node 0ドル,ドル or is connected to a node which is connected to node 0ドル$. That is, for each $v$ such that 1ドル \le v \lt N,ドル either $P[v]=0$ or $P[P[v]]=0$.

48

For each $c$ such that 1ドル \le c \le M,ドル there are at most two edges of color $c$.

514

$N \le 200$ and $M \le 500$

614

$N \le 2,000円$ and $M = 2$

712

$N \le 2,000円$

817

$M = 2$

912

No additional constraints.

힌트

샘플 그레이더

The sample grader reads the input in the following format:

  • line 1ドル$: $N$ $M$
  • line 2ドル$: $P[0]$ $P[1]$ $\ldots$ $P[N-1]$
  • line 3ドル$: $C[0]$ $C[1]$ $\ldots$ $C[N-1]$

Let $b[0], b[1], \ldots$ denote the elements of the array returned by beechtree. The sample grader prints your answer in a single line, in the following format:

  • line 1ドル$: $b[0]$ $b[1]$ $\ldots$

첨부

출처

Olympiad > International Olympiad in Informatics > IOI 2023 > Day 2 4번

  • 문제를 만든 사람: Alireza Keshavarz, Amir Mohammad Shahrezaei

제출할 수 있는 언어

C++17, C++20, C++17 (Clang), C++20 (Clang)

채점 및 기타 정보

  • 예제는 채점하지 않는다.
(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /