๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 15900๋ฒˆ - ๋‚˜๋ฌด ํƒˆ์ถœ

by ์•ˆ์ฃผํ˜• 2022. 8. 15.

๋ฌธ์ œ

 

15900๋ฒˆ: ๋‚˜๋ฌด ํƒˆ์ถœ

ํ‰์†Œ์— ์‚ฌ์ด๊ฐ€ ์ข‹์ง€ ์•Š๋˜ ์„ฑ์›์ด์™€ ํ˜•์„์ด๊ฐ€ ๋“œ๋””์–ด ์ œ๋Œ€๋กœ ํ•œ ํŒ ๋ถ™์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์„ฑ์›์ด์™€ ํ˜•์„์ด ๋‘˜๊ณผ ๋ชจ๋‘ ๋˜‘๊ฐ™์ด ์นœํ•œ ์ธ์„ญ์ด๊ฐ€ ๋Œ€๊ฒฐ ์ข…๋ชฉ์„ ์ •ํ•ด ๊ฐ€์ ธ์™”๋‹ค. ๋ฐ”๋กœ '๋‚˜๋ฌด ํƒˆ์ถœ' ์ด๋ผ๋Š” ๋ณด๋“œ๊ฒŒ

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;

int N;
vector<int>graph[500001];
bool visited[500001];
int odd_height_cnt;

void dfs(int node, int depth){
    if(graph[node].size()==1 && node != 1){  // ๋ฆฌํ”„๋…ธ๋“œ์ผ ๋•Œ
        if(depth&1) odd_height_cnt++;
        return;
    }
    visited[node] = 1;
    for(auto next: graph[node]){
        if(!visited[next]){
            dfs(next, depth+1);
        }
    }
}
int main(){
    
    /*
     ๋†’์ด๊ฐ€ ํ™€์ˆ˜์ธ ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ํ™€์ˆ˜๊ฐœ๋ฉด ์ด๊ธฐ๊ณ  ์ง์ˆ˜๊ฐœ๋ฉด ์ง„๋‹ค.
     */
    
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N;
    for(int i=0; i<N-1; i++){
        int a,b; cin>>a>>b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    
    dfs(1, 0);
    
    if(odd_height_cnt % 2 == 0) cout<<"No";
    else cout<<"Yes";
}

 

ํ’€์ด

ํŠธ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ์–ด์•ผ ์„ฑ์›์ด๊ฐ€ ์ด๊ธธ ์ˆ˜ ์žˆ์„์ง€ ํ‚ค ํฌ์ธํŠธ๋ฅผ ๋– ์˜ฌ๋ ค์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ํ‚ค ํฌ์ธํŠธ๋Š” ์„ฑ์›์ด๊ฐ€ ํŠธ๋ฆฌ์—์„œ ๋†’์ด๊ฐ€ ํ™€์ˆ˜์ธ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ํ™€์ˆ˜ ๊ฐœ๋ฉด ์ด๊ธฐ๊ณ  ์ง์ˆ˜ ๊ฐœ๋ฉด ์ง„๋‹ค. ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€์˜ ๋†’์ด๊ฐ€ ํ™€์ˆ˜์ธ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€๋ฅผ ์ฐพ์•„์„œ ์กฐ๊ฑด์— ๋งž๊ฒŒ Yes์™€ No๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€