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

[๋ฐฑ์ค€,c++] 1595๋ฒˆ - ๋ถ์ชฝ๋‚˜๋ผ์˜ ๋„๋กœ

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

๋ฌธ์ œ

 

1595๋ฒˆ: ๋ถ์ชฝ๋‚˜๋ผ์˜ ๋„๋กœ

์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ์ค„์— ๊ฑธ์ณ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ์˜ ๊ฐ ์ค„์€ ์„ธ ๊ฐœ์˜ ์–‘์˜ ์ •์ˆ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”๋ฐ, ๊ฐ๊ฐ์€ ์ฐจ๋ก€๋Œ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋„์‹œ์˜ ๋ฒˆํ˜ธ์™€ ๋‘ ๋„์‹œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ชจ๋“  ๋„๋กœ๋Š”

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <memory.h>

using namespace std;

vector<pair<int,int>>graph[10001];
bool visited[10001];
int max_cost, max_node;

void dfs(int node, int cost){
    if(cost>max_cost){
        max_cost = cost;
        max_node = node;
    }
    visited[node] = 1;
    for(auto next: graph[node]){
        if(!visited[next.first]){
            dfs(next.first, cost + next.second);
        }
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int a, b, c;
    while(cin>>a>>b>>c){
        graph[a].push_back({b,c});  //a์—์„œ b๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ c๋งŒํผ์˜ ๋น„์šฉ์ด ๋“ ๋‹ค.
        graph[b].push_back({a,c});
    }
    
    dfs(1,0);
    memset(visited, 0, sizeof(visited));
    max_cost = 0;
    dfs(max_node, 0);
    cout<<max_cost;
}

 

ํ’€์ด

๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ๋‘ ๋„์‹œ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋…ธ๋“œ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 10,000 ์ด๊ธฐ ๋•Œ๋ฌธ์— O(N^2) ๋ณต์žก๋„๋กœ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์œ„ ๋ฌธ์ œ๋Š” ๋‹ค์Œ์˜ ๋ฌธ์ œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

 

[๋ฐฑ์ค€,c++] 1167๋ฒˆ - ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„

๋ฌธ์ œ 1167๋ฒˆ: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ ํŠธ๋ฆฌ๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋จผ์ € ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ๋Š” ํŠธ๋ฆฌ์˜ ์ •์ ์˜ ๊ฐœ์ˆ˜ V๊ฐ€ ์ฃผ์–ด์ง€๊ณ  (2 ≤ V ≤ 100,000)๋‘˜์งธ ์ค„๋ถ€ํ„ฐ V๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ„์„ ์˜ ์ •๋ณด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์ง„๋‹ค.

dkswnkk.tistory.com

๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š”์—†์ด ๊ทธ๋ƒฅ ์•„๋ฌด ๋…ธ๋“œ๋‚˜ ๊ธฐ์ค€์ ์œผ๋กœ ์žก๊ณ  ์ถœ๋ฐœํ•ด ๊ฐ€์žฅ ๊ธด ๋…ธ๋“œ๋ฅผ ์ฐพ์€ ํ›„ ํ•ด๋‹น ๋…ธ๋“œ์—์„œ dfs๋ฅผ ๋Œ๋ฆฌ๋ฉด O(N+M) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ๊ฐ€์žฅ ๊ธด ๊ธธ์ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€