[백준] 노드사이의 거리(C++)

2025. 5. 4. 21:55·개발/알고리즘

문제 링크

https://www.acmicpc.net/problem/1240

 

 

코드 구현

#include <iostream>
#include <vector>
#include <unordered_map>

using namespace std;

vector<bool> visited;
int answer = 0;

void dfs(int _node, int _end, int _dist, const vector<vector<int>>& tree)
{
	if (_node == _end)
	{
		answer += _dist;
		return;
	}

	for (int i = 0; i < tree.size(); i++)
	{
		if (tree[_node][i] && !visited[i])
		{
			visited[i] = true;
			dfs(i, _end, tree[_node][i] + _dist, tree);
			visited[i] = false;
		}
	}

	return;
}

int main()
{
	int N, M;
	cin >> N >> M;

	vector<vector<int>> tree(N, vector<int>(N));
	visited.resize(N);

	for (int i = 0; i < N - 1; i++)
	{
		int node1, node2, dist;
		cin >> node1 >> node2 >> dist;
		tree[node1 - 1][node2 - 1] = dist;
		tree[node2 - 1][node1 - 1] = dist;
	}

	for (int i = 0; i < M; i++)
	{
		answer = 0;

		// 거리를 구하고 싶은 노드 입력
		int num1, num2;
		cin >> num1 >> num2;

		visited[num1 - 1] = true;
		dfs(num1 - 1, num2 - 1, 0, tree);
		visited[num1 - 1] = false;

		cout << answer << endl;
	}

	return 0;
}

 

 

해결 방법

dfs를 이용하여 해결하였다. 2차 배열로 노드 간 연결 정보를 저장하고 방문체크를 하며 _node 와 _end가 같아지는 시점에 누적된 거리를 반환하도록 하였다.

'개발 > 알고리즘' 카테고리의 다른 글

[프로그래머스] 전력망을 둘로 나누기(C++)  (0) 2025.05.06
[백준] RGB거리(C++)  (0) 2025.05.04
[백준] 스타트와 링크(C++)  (2) 2025.04.25
[프로그래머스] 하노이의 탑(C++)  (1) 2025.04.22
[프로그래머스] 타겟 넘버(C++)  (1) 2025.04.19
'개발/알고리즘' 카테고리의 다른 글
  • [프로그래머스] 전력망을 둘로 나누기(C++)
  • [백준] RGB거리(C++)
  • [백준] 스타트와 링크(C++)
  • [프로그래머스] 하노이의 탑(C++)
Majangnan
Majangnan
  • Majangnan
    개발 모코코
    Majangnan
  • 전체
    오늘
    어제
    • 분류 전체보기 (55) N
      • 개발 (54) N
        • C# (10)
        • SQL (3)
        • Unity (8)
        • Unreal (10)
        • C++ (2)
        • Server (1)
        • DX11 (8)
        • 알고리즘 (11) N
  • 블로그 메뉴

    • 홈
    • 방명록
    • 깃허브
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DirectX11
    언리얼
    c++
    UnReal
    DX11
    프로그래머스
    C#
    Unity
    상속
    Mecanim
    블루프린트
    알고리즘
    3dlight
    백준
    blueprint
    sql
    슈팅게임
    코딩테스트
    MAC
    dx3d
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Majangnan
[백준] 노드사이의 거리(C++)
상단으로

티스토리툴바