알고리즘 문제풀기/인프런 강의 정답
68. 최소비용(인접리스트)
코다람쥐
2022. 5. 16. 12:07
나의정답.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
int cp[30] = { 0 };
int n, res = 100000;
vector<pair<int, int> > map[30];
void dfs(int v, int sum) {
if (v == n) {
if (sum < res)
res = sum;
}
else {
for (int i = 0; i < map[v].size(); i++) {
if (cp[ map[v][i].first ] == 1) continue;
cp[ map[v][i].first ] = 1;
dfs( map[v][i].first, sum + map[v][i].second);
cp[ map[v][i].first ] = 0;
}
}
}
int main(int argc, char** argv) {
//freopen("input.txt", "rt", stdin);
int m, a, b, c;
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++) {
scanf("%d %d %d", &a, &b, &c);
map[a].push_back(make_pair(b, c));
}
cp[1] = 1;
dfs(1, 0);
printf("%d", res);
}