입력 코드
#include <stdio.h>
int N, M;
int p[50], c[50];
int ans;
void init(void)
{
int i;
scanf("%d", &N);
for (i = 0; i < N; ++i)
{
scanf("%d", &p[i]);
if (-1 != p[i]) ++c[p[i]];
}
scanf("%d", &M);
}
void func(void)
{
int i, j;
--c[p[M]];
for (i = 0; i < N; ++i)
{
if (i == M) continue;
if (0 == c[i])
{
j = i;
while (-1 != j && M != j) j = p[j];
if (-1 == j) ++ans;
}
}
}
int main(void)
{
init();
func();
printf("%d\n", (N == 2) ? 1 : ans);
return 0;
}
출처 www.acmicpc.net/source/20604266
코드 설명
#트리 #그래프이론 #그래프탐색 #깊이우선탐색
문제 출처
1068번: 트리
첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다
www.acmicpc.net
'C' 카테고리의 다른 글
#90. [백준_C언어] 1931 : 회의실 배정 \ 그리디 알고리즘 (0) | 2021.02.20 |
---|---|
#86. [백준_C언어] 1991 : 트리 순회 \ 트리 (0) | 2021.02.18 |
#84. [백준_C언어] 11724 : 연결 요소의 개수 \ 그래프 탐색 (0) | 2021.02.17 |
#83. [백준_C언어] 1707 : 이분 그래프 \ 그래프 탐색 (0) | 2021.02.17 |
#82. [백준_C언어] 2178 : 미로 탐색 \ 그래프 탐색 (0) | 2021.02.17 |