๋ฌธ์
1068๋ฒ: ํธ๋ฆฌ
์ฒซ์งธ ์ค์ ํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ 0๋ฒ ๋ ธ๋๋ถํฐ N-1๋ฒ ๋ ธ๋๊น์ง, ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๊ฐ ์ฃผ์ด์ง๋ค. ๋ง์ฝ ๋ถ๋ชจ๊ฐ ์๋ค๋ฉด (๋ฃจํธ) -1์ด ์ฃผ์ด์ง๋ค
www.acmicpc.net
์ฝ๋
#include <iostream>
#include <vector>
#include <memory.h>
using namespace std;
vector<int>v[51];
bool visited[51];
int N, root;
int cnt;
void dfs(int start){
if(v[start].empty()){
cnt++;
return;
}
else if(v[start].size()==1){
if(visited[v[start].front()] == true) cnt++;
}
for(auto it: v[start]){
if(!visited[it]){
visited[it] = true;
dfs(it);
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N;
for(int i=0; i<N; i++){
int node; cin>>node;
if(node==-1) root = i;
else if(node!=-1) v[node].push_back(i);
}
memset(visited,0,sizeof(visited));
int remove; cin>>remove;
visited[remove] = true;
if(remove!=root) dfs(root);
cout<<cnt;
}
ํ์ด
๊ทธ๋ํ ํ์ ๋ฌธ์ ์
๋๋ค. ํธ๋ฆฌ์์ ํน์ ๋
ธ๋๋ฅผ ์ง์ด ํ์ ๋ฆฌํ ๋
ธ๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ ๋ฌธ์ ์
๋๋ค.
visited ๋ฐฐ์ด์ ๋์ด ์ ๊ฑฐํ ๋
ธ๋์ ๊ฒฝ์ฐ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ฑฐํ์๊ณ , ์ต์ข
์ ์ผ๋ก ๊ฐ ๋
ธ๋์ size๊ฐ 0์ผ ๋์ ๋
ธ๋์ ๊ฐ์๋ฅผ ์ธ์ด์ฃผ๋ฉด ๋ฆฌํ ๋
ธ๋์ ๊ฐ์๊ฐ ๋ฉ๋๋ค.
๋ค๋ง ์๋ ์
๋ ฅ๊ณผ ๊ฐ์ด ํ์ค ์ง๋ฆฌ ๋
ธ๋ ๊ฐ ์์ ๋ ๋
ธ๋๋ฅผ ์ง์ธ ๋์ ์ฃ์ง ์ผ์ด์ค๋ฅผ ์กฐ์ฌํด์ผ ํฉ๋๋ค.
4
-1 0 1 2
2
ํด๋น ์ผ์ด์ค ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ์์ ๋ ธ๋๊ฐ ํ๋์ผ ๋, ๊ทธ ๋ ธ๋๊ฐ ์ ๊ฑฐ๋์๋ค๋ฉด ๋ฆฌํ ๋ ธ๋์ ๊ฐ์๋ฅผ ์นด์ดํ ํ๋ ์์ผ๋ก ์์ธ์ฒ๋ฆฌํ์ต๋๋ค.
else if(v[start].size()==1){
if(visited[v[start].front()] == true) cnt++;
}
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 3584๋ฒ - ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์ (0) | 2022.07.11 |
---|---|
[๋ฐฑ์ค,c++] 14675๋ฒ - ๋จ์ ์ ๊ณผ ๋จ์ ์ (0) | 2022.06.30 |
[๋ฐฑ์ค,c++] 6416๋ฒ - ํธ๋ฆฌ์ธ๊ฐ? (0) | 2022.06.30 |
[๋ฐฑ์ค,c++] 5539๋ฒ - ์ด์ง ๊ฒ์ ํธ๋ฆฌ (0) | 2022.06.21 |
[๋ฐฑ์ค,c++] 9934๋ฒ - ์์ ์ด์ง ํธ๋ฆฌ (0) | 2022.06.21 |
[๋ฐฑ์ค,c++] 1655๋ฒ - ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (0) | 2022.06.21 |
๋๊ธ