#include<stdio.h>
int count = 0;
dfs(int now_node, int* node, int nodenum,int root)
{
int check = 0;
for (int i = 0; i < nodenum; i++)
{
if (now_node == node[i])
{
check++;
//printf("i: %d\n", i);
dfs(i, node, nodenum,root);
}
}
if (check == 0)//now_node>=0&&now_node!=root&&
count++;
}
int main()
{
int node[50];
int nodenum,ignore_node;
int root=100;
scanf("%d", &nodenum);
for (int i = 0; i < nodenum; i++)
{
scanf("%d", &node[i]);
if (node[i] == -1)
root = i;
}
scanf("%d", &ignore_node);
//input
node[ignore_node] = -2;
if (ignore_node == root||root==100)
{
printf("0");
return(0);
}
dfs(root, node, nodenum,root);
printf("%d", count);
}
스스로 스택을 구현했고 이제 제법 문제가 잘 풀려서 기분이 좋다.
이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다.
혹시나 참고하시는 부분에 이상한 부분이나 질문이 생긴다면 남겨주시면 친절히 답변 드리겠습니다.
728x90
'알고리즘 기초시절' 카테고리의 다른 글
백준 2178 BFS미로탐색(C언어) (2) | 2023.01.04 |
---|---|
백준 토마토 성공!! 1068번 BFS(C언어) (0) | 2023.01.04 |
백준 피보나치 함수 1003번 (0) | 2023.01.04 |
백준 타일채우기 문제 dp (0) | 2023.01.03 |
백준 마인크래프트 18111번 브루스포스(C언어) (0) | 2023.01.03 |