๋ฌธ์
์ฝ๋
#include <iostream>
#include <vector>
#include <memory.h>
#define MAX 1e9
using namespace std;
int N,M;
vector<pair<int,int>>graph[1001];
int visited[1001];
int ans;
void dfs(int x, int y, int dist){
visited[x]=1;
if(x==y){
ans = dist;
return;
}
for(int i=0; i<graph[x].size(); i++){
int cost = dist + graph[x][i].second;
int next_node = graph[x][i].first;
if(visited[next_node]) continue;
visited[next_node]=1;
dfs(graph[x][i].first, y, cost) ;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N>>M;
for(int i=0; i<N-1; i++){
int a,b,dist; cin>>a>>b>>dist;
graph[a].push_back({b,dist});
graph[b].push_back({a,dist});
}
for(int i=0; i<M; i++){
int a,b; cin>>a>>b;
dfs(a,b,0);
memset(visited,0,sizeof(visited));
cout<<ans<<'\n';
}
}
ํ์ด
์๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๋ ธ๋ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๊ฐ ๋ ธ๋๋ณ๋ก์ ๊ฑฐ๋ฆฌ๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ dfs๋ฅผ ํตํด์ ์ ์ ์ ํ๋ํ๊ธฐ ํ๋ฏ์ด ํ๊ณ ํ๊ณ ๋ค์ด๊ฐ์ฌ ๋์ฐฉ ๋ ธ๋๊ฐ ๋์์ ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 23977๋ฒ - To Find Password (0) | 2022.03.10 |
---|---|
[๋ฐฑ์ค,c++] 1874๋ฒ - ์คํ ์์ด (0) | 2022.03.09 |
[๋ฐฑ์ค,c++] 1991๋ฒ - ํธ๋ฆฌ ์ํ (0) | 2022.03.08 |
[๋ฐฑ์ค,c++] 21918๋ฒ - ์ ๊ตฌ (0) | 2022.03.01 |
[๋ฐฑ์ค,c++] 14888๋ฒ - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2022.02.17 |
[๋ฐฑ์ค,c++] 10211๋ฒ - Maximum Subarray (0) | 2022.01.04 |
๋๊ธ