https://www.acmicpc.net/problem/10971
10971번: 외판원 순회 2
첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j로 가기 위한 비용을 나타낸다. 항상 순회할 수 있는 경우만 입력으로 주어진다.
www.acmicpc.net
//나머지
#include<stdio.h>
#include<vector>
#include<stack>
#include<string.h>
#include<algorithm>
using namespace std;
int main(void)
{
int n;
int w[10][10] = {0, };
int a[10];
int min=2100000000;
for(int i=0; i<10; i++)
{
a[i] = i;
}
int sum=0;
scanf("%d", &n);
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
scanf("%d", &w[i][j]);
}
}
do{
sum=0;
int flag = 1;
for(int i=0; i<n; i++)
{
int x;
if(i+1 < n)
{
x = w[a[i]][a[i+1]];
sum+=x;
}
else
{
x = w[a[i]][a[0]];
sum+=x;
}
if(x==0)
{
flag++;
}
}
if(flag == 1 && min>sum)
{
min = sum;
}
}while(next_permutation(a, a+n)!=0);
printf("%d", min);
return 0;
}
'정보올림피아드-KOI > BOJ' 카테고리의 다른 글
단어 뒤집기 2 (0) | 2021.12.31 |
---|---|
백준 : 가운데를 말해요 1655번 (0) | 2020.05.10 |
백준 - 프린터 큐 : 1966번 (0) | 2020.04.26 |
백준 - 로마 숫자 만들기 : 16922번 (0) | 2020.04.26 |
백준 - 두 로봇 : 15971 (0) | 2020.03.31 |