728x90
[ 접근법 ]
1. 거리를 계산하기 때문에, 거리를 저장할 2차원 배열을 만든다.
2. 다른 조건이 없으므로, 자식들을 DFS로 돌면서 자신과 목표가 같을 때 거리를 출력한다.
더보기
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 1001
vector<int> v[MAX];
bool visited[MAX];
int parent[MAX];
int lenth[MAX][MAX];
void init() {
for (int i = 1; i < MAX; i++) {
visited[i] = false;
}
}
void dfs(int start, int end, int len, int before) {
visited[start] = true;
if (start == end) {
cout << len << endl;
return;
}
for (int i = 0; i < v[start].size(); i++) {
int child = v[start][i];
if (child == before) continue;
if (!visited[child]) {
dfs(child, end, len + lenth[start][child], start);
}
}
}
int main() {
int N, M;
cin >> N >> M;
N--;
while (N--) {
int a=0, b=0, len=0;
cin >> a >> b >> len;
v[a].push_back(b);
v[b].push_back(a);
lenth[a][b] = len;
lenth[b][a] = len;
}
while (M--) {
init();
int start, end;
int res = 0;
cin >> start >> end;
dfs(start, end, 0, 0);
}
}
728x90
'📊알고리즘 > BOJ' 카테고리의 다른 글
[👊DP뿌시기 #2] (BOJ 2133) 타일 채우기 (0) | 2023.08.14 |
---|---|
[👊DP뿌시기 #1] (BOJ 11726) 2 X N 타일링 (0) | 2023.08.14 |
[BOJ 2644] 촌수 계산 (0) | 2023.03.31 |
[BOJ 1941] 소문난 칠공주 (0) | 2023.03.28 |
BOJ 9184] 신나는 함수 실행 (0) | 2022.12.27 |