zzerross   3년 전

아래 입력과 랜덤 생성 코드 짜서 100세트 정도, 

다른 분의 정답 코드의 결과와 비교해봐도 결과가 같은데, 계속 오답이 나오네요.

계시판 다 보고는 혹시 저도 초기화 문제일까 싶어,

https://www.acmicpc.net/source/21519200 처럼 초기화를 해줘봐도 역시나 오답이네요.

7
6 6 -1 6 0 0 -1
0
0 1  2 3 4 5  6
result>
1
        6     2
       /|\
      0 1 3
     /|
    4 5

6
2 2 -1 2 0 0
0
0 1  2 3 4 5
result:
2
        2
       /|\
      0 1 3
     /|
    4 5

7
2 2 -1 2 0 0  3
0
0 1  2 3 4 5  6
result:
2
        2       
       /|\
      0 1 3
     /|    \
    4 5     6

5
-1 0 0 1 1
1
result:
1

3
-1 -1 -1
2
result:
2

4
3 3 3 -1 
3 
result:
0
    3
   /|\
  0 1 2

4
-1 0 0 1
3
result:
2
     0
    /|
   1 2
  /
 3

4
-1 0 1 2
2
result:
1
      0
     /
    1
   /
  2
 /
3

5
-1 0 0 1 1
2
result:
2

2
-1 0
1
result:
1

1
-1
0
result:
0

9
8 0  4 0 7 4  1 8 -1
4
0 1  2 3 4 5  6 7  8
result>
3
    7---8
    |    \
    | 6-1-0
    |     | 
  2-4-5   3



50
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
49
result:
0

9
2 2 -1 2 0 0 5 1 0
1
0 1  2 3 4 5 6 7 8
result>
4
        2
       /|\
  +---0 1 3
  |  /| |
  8 4 5 7
      |
      6


코드는 계시판 보고는 루트는 하나로 가정을 했구요.

M은 입력으로 주어지는 노드 수

D는 입력으로 주어지는 삭제된 노드 번호

R은 부모 노드 번호가 -1로 입력된 루트 노느 번호

P는 입력으로 주어지는 부모 노드의 번호

C는 각 노드들의 자식 노드들에 대한 인접리스트

N은 각 노드들의 자식 노드 수 이고

루트 부터 자식노드를 찾아 DFS를 돌면서, leaf node이면 count하는 방식으로 구현했습니다.

제가 멀 놓친걸까요...

zzerross   3년 전

아래 입력이

12
4 2 6 0 9 6 -1 2 2 7  6  7 
1
result:
0 1 2 3 4 5  6 7 8 9 10 11
5! not 1
         6
      +--+--+
      2  5  10
+--+--+  *  *
1  7  8
x  |  *
   |
+--+
11 9
*  |
   4
   |
   0
   |
   3
   *

5가 아닌 1이 나와서 봤더니,

위 코드의 28번 라인에서 P[i]의 값이 바뀌어 R(루트)이 지정이 않되는 현상이 있어서,
C[P[i]][N[P[i]]++] = 

이전에 오답 처리된 답안들을 기존 C++에서 C로 제출해 보니, 정답 처리 되네요...

제 PC에선 g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0 였는데, 서버 C++에선 먼가 다르게 처리되는 거 같기도 하군요.

zzerross   3년 전

참고로, C++(clang)은 또 정답 처리되네요.

댓글을 작성하려면 로그인해야 합니다.