๐Ÿ’ป

[๋ฐฑ์ค€] ๋‹ค์ต์ŠคํŠธ๋ผ - 6118. ์ˆจ๋ฐ”๊ผญ์งˆ(๋ฌธ์ œํ‘ธ๋Š”์ค‘) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ๋‹ค์ต์ŠคํŠธ๋ผ - 6118. ์ˆจ๋ฐ”๊ผญ์งˆ(๋ฌธ์ œํ‘ธ๋Š”์ค‘)

๋˜ํšจ๋‹ˆ 2020. 3. 4. 00:22

๋ฌธ์ œ

์žฌ์„œ๊ธฐ๋Š” ์ˆ˜ํ˜€๋‹ˆ์™€ ๊ต์™ธ ๋†์žฅ์—์„œ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ๋†์žฅ์—๋Š” ํ—›๊ฐ„์ด ๋งŽ์ด ๋„๋ ค์žˆ๊ณ  ์žฌ์„œ๊ธฐ๋Š” ๊ทธ ์ค‘์— ํ•˜๋‚˜์— ์ˆจ์–ด์•ผ ํ•œ๋‹ค. ํ—›๊ฐ„์˜ ๊ฐœ์ˆ˜๋Š” N(2 <= N <= 20,000)๊ฐœ์ด๋ฉฐ, 1 ๋ถ€ํ„ฐ ์ƒŒ๋‹ค๊ณ  ํ•˜์ž.

์žฌ์„œ๊ธฐ๋Š” ์ˆ˜ํ˜€๋‹ˆ๊ฐ€ 1๋ฒˆ ํ—›๊ฐ„๋ถ€ํ„ฐ ์ฐพ์„ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ๋ชจ๋“  ํ—›๊ฐ„์€ M(1<= M <= 50,000)๊ฐœ์˜ ์–‘๋ฐฉํ–ฅ ๊ธธ๋กœ ์ด์–ด์ ธ ์žˆ๊ณ , ๊ทธ ์–‘ ๋์„ A_i ์™€ B_i(1<= A_i <= N; 1 <= B_i <= N; A_i != B_i)๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋˜ํ•œ ์–ด๋–ค ํ—›๊ฐ„์—์„œ ๋‹ค๋ฅธ ํ—›๊ฐ„์œผ๋กœ๋Š” ์–ธ์ œ๋‚˜ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ์ข‹๋‹ค. 

์žฌ์„œ๊ธฐ๋Š” ๋ฐœ๋ƒ„์ƒˆ๊ฐ€ ์ง€๋…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ๋ƒ„์ƒˆ๊ฐ€ ์•ˆ๋‚˜๊ฒŒ ์ˆจ์„ ์žฅ์†Œ๋ฅผ ์ฐพ๊ณ ์ž ํ•œ๋‹ค. ๋ƒ„์ƒˆ๋Š” 1๋ฒˆ ํ—›๊ฐ„์—์„œ์˜ ๊ฑฐ๋ฆฌ(์—ฌ๊ธฐ์„œ ๊ฑฐ๋ฆฌ๋ผ ํ•จ์€ ์ง€๋‚˜์•ผ ํ•˜๋Š” ๊ธธ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜์ด๋‹ค)๊ฐ€ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ๊ฐ์†Œํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์žฌ์„œ๊ธฐ์˜ ๋ฐœ๋ƒ„์ƒˆ๋ฅผ ์ตœ๋Œ€ํ•œ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ํ—›๊ฐ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ์ž!

 

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” N๊ณผ M์ด ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

์ดํ›„ M์ค„์— ๊ฑธ์ณ์„œ A_i์™€ B_i๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ถœ๋ ฅ์€ ํ•œ์ค„๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์„ธ ๊ฐœ์˜ ๊ฐ’์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„์ง€์–ด ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค. 

์ฒซ ๋ฒˆ์งธ๋Š” ์ˆจ์–ด์•ผ ํ•˜๋Š” ํ—›๊ฐ„ ๋ฒˆํ˜ธ๋ฅผ(๋งŒ์•ฝ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์€ ํ—›๊ฐ„์ด ์—ฌ๋Ÿฌ๊ฐœ๋ฉด ๊ฐ€์žฅ ์ž‘์€ ํ—›๊ฐ„ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค), ๋‘ ๋ฒˆ์งธ๋Š” ๊ทธ ํ—›๊ฐ„๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ, ์„ธ ๋ฒˆ์งธ๋Š” ๊ทธ ํ—›๊ฐ„๊ณผ ๊ฐ™์€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ํ—›๊ฐ„์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

6 7
3 6
4 3
3 2
1 3
1 2
2 4
5 2

 

์˜ˆ์ œ ์ถœ๋ ฅ1

4 2 3

 

ํžŒํŠธ

๋†์žฅ์˜ ์กฐ๊ฐ๋„๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

                   1--2--5
                   | /|
                   |/ |
                   3--4
                   |
                   6


ํ—›๊ฐ„ 4, 5, 6์€ ๋ชจ๋‘ 2์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ€์ง„๋‹ค. ์—ฌ๊ธฐ์„œ 4๋ฒˆ ํ—›๊ฐ„์„ ์„ ํƒํ•˜๋Š” ์ด์œ ๋Š” ํ—›๊ฐ„์˜ ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ์ž‘๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ƒ๊ฐ

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

#include <iostream>
#include <queue>
#include <vector>

using namespace std;

int n, m;
int dist[20001];
vector<vector<int>> v;
queue<int> q;
   
int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n >> m;
    
    v.resize(n);
    
    for(int i=0; i<m; i++){
        int x, y;
        cin >> x >> y ;
        v[x-1].push_back(y-1);
        v[y-1].push_back(x-1);
    }

    q.push(0);
    
    while(!q.empty()){
        int cur = q.front();
        q.pop();
        for(int i=0; i<v[cur].size(); i++){
            int next = v[cur][i];
            if(dist[next] == 0){
                dist[next] = dist[cur] + 1;
                q.push(next);
            }
        }
    }
    
    int max = 1;
    for(int i=2; i<n; i++){
        if(dist[max] == dist[i]){
            max = i;
        }
    }
    int cnt = 0;
    for(int i=1; i<n; i++){
        if(dist[max] == dist[i]){
            cnt ++;
        }
    }
    
    cout << max+1 << ' ' << dist[max] << ' ' <<  cnt << '\n';
    
    return 0;
}
๋ฐ˜์‘ํ˜•
Comments