입력 코드
#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
코드 설명
#트리 #그래프이론 #그래프탐색 #깊이우선탐색
문제 출처
'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 |