728x90
반응형
https://www.acmicpc.net/problem/10971
#include <bits/stdc++.h>
using namespace std;
int n;
bool ch[11];
int ans = 1e9;
int w[10][10];
void go(int start, int index, int cnt, int sum) { // 최초 출발지점, 현재 위치, 지나간 마을수, 이동비용
if(cnt == n){
if(w[index][start] == 0) return;
if(ans > sum + w[index][start]) ans = sum + w[index][start];
return;
}
for(int i=0; i<n; i++){
if(ch[i] || w[index][i]==0) continue;
ch[i] = 1;
go(start, i, cnt+1, sum+w[index][i]);
ch[i] = 0;
}
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> w[i][j];
}
}
for(int i=0; i<n; i++){
ch[i] = 1;
go(i, i, 1, 0); // 최초 출발지점, 현재 위치, 지나간 마을수, 이동비용
ch[i] = 0;
}
cout << ans;
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/BFS/C++] 5014번 스타트링크 (0) | 2023.01.11 |
---|---|
[백준/BFS/C++] 1697번 숨바꼭질 * (0) | 2023.01.10 |
[백준/백트래킹/C++] 6603번 로또 (0) | 2023.01.09 |
[백준/백트래킹/C++] 15652번 N과 M (4) (0) | 2023.01.08 |
[백준/백트래킹/C++] 15651번 N과 M (3) (0) | 2023.01.08 |