아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

도시

면접 대비

시간 제한1초메모리 제한128 MB

요약
일렬로 늘어선 도시 사이 일방통행과 양방통행 도로를 따라 각 도시에서 도달 가능한 다른 도시 수를 셉니다.
난이도

보통10점 중 5점

유형
배열, 누적 합
정답자
아직 제출이 없습니다

문제

강을 따라 nn개의 도시가 늘어서 있습니다. 인접한 두 도시 사이에는 도로가 하나씩 놓여 있지만, 모든 도로가 양방향인 것은 아니어서 어떤 도시에서 다른 모든 도시로 갈 수 있는 것은 아닙니다.

어떤 도로들이 놓여 있는지 주어질 때, 각 도시에서 출발하여 도달할 수 있는 다른 도시의 개수를 구하세요.

입력

첫째 줄에 도시의 수 nn (1≤n≤1061 \le n \le 10^6)이 주어집니다.

둘째 줄에는 n−1n - 1개의 정수 d1,d2,…,dn−1d_1, d_2, \dots, d_{n-1} (0≤di≤20 \le d_i \le 2)이 주어집니다. did_i는 ii번째 도시와 (i+1)(i+1)번째 도시 사이의 도로를 나타냅니다.

  • di=0d_i = 0이면 ii번째 도시에서 (i+1)(i+1)번째 도시로 가는 일방통행 도로입니다.
  • di=1d_i = 1이면 (i+1)(i+1)번째 도시에서 ii번째 도시로 가는 일방통행 도로입니다.
  • di=2d_i = 2이면 두 도시를 잇는 양방향 도로입니다.

출력

한 줄에 nn개의 정수 w1,w2,…,wnw_1, w_2, \dots, w_n을 공백으로 구분하여 출력합니다. wiw_i는 ii번째 도시에서 출발하여 도달할 수 있는 도시의 개수이며, 자기 자신은 세지 않습니다.

예제3

  1. 예제 1

    입력
    5
    0 2 0 1
    
    예상 출력
    3 2 2 0 1
    
  2. 예제 2

    입력
    4
    0 0 0
    
    예상 출력
    3 2 1 0
    
  3. 예제 3

    입력
    4
    1 1 1
    
    예상 출력
    0 1 2 3