문제
가중치 방향그래프가 주어지면 1번 정점에서 N번 정점으로 가는 최소비용을 출력하는 프로그램을 작성하세요.
입력설명
첫째 줄에는 정점의 수 N(1<=N<=20)와 간선의 수 M가 주어진다. 그 다음부터 M줄에 걸쳐 연결정보가 주어진다.
출력설명
최소비용을 출력합니다.
입력예제
5 8
1 2 12
1 3 6
1 4 10
2 3 2
2 5 2
3 4 3
4 2 2
4 5 5
출력예제
13
#include <stdio.h>
#include <vector>
using namespace std;
int check[30], n, cost=2147000000;
vector<pair<int, int> > map[30];
void DFS(int v, int sum){
if(v == n){
if(sum < cost){
cost = sum;
}
} else {
for(int i=0; i<map[v].size(); i++){
if(check[map[v][i].first]==0){
check[map[v][i].first] = 1;
DFS(map[v][i].first, sum+map[v][i].second);
check[map[v][i].first] = 0;
}
}
}
}
int main(){
freopen("input.txt", "rt", stdin);
int m, i, a, b, c;
scanf("%d %d", &n, &m);
for(i=1; i<=m; i++){
scanf("%d %d %d", &a, &b, &c);
map[a].push_back(make_pair(b, c));
}
check[1] = 1;
DFS(1, 0);
printf("%d", cost);
return 0;
}
문제는 같은데 vector객체로 푸냐 배열로 푸냐 pair를 활용해서 푸냐에 따라 코드만 다릅니다
'알고리즘 > it 취업을 위한 알고리즘 문제풀이' 카테고리의 다른 글
70. 그래프 최단거리(BFS) (0) | 2021.06.04 |
---|---|
69. 이진트리 넓이우선탐색(BFS) (0) | 2021.06.04 |
67. 최소비용 (DFS: 인접행렬) (0) | 2021.06.03 |
66. 경로탐색(vector) (0) | 2021.06.03 |
STL vector 사용법 (0) | 2021.06.03 |