티스토리 뷰

알고리즘/BOJ

[BOJ 15686] 치킨 배달

히더 2018. 10. 8. 15:33

백준 :: BOJ :: 15686 :: 치킨 배달


출처 : https://www.acmicpc.net/problem/15686


#include <bits/stdc++.h>

using namespace std;


struct s {

int r, c, ch;

};

int N, M, tmp, ans;

vector <s> h, c;

vector<int>a;

vector<vector<int>> hh;


void dfs(int n, int ii) {

if (n == M) {

int r = 0;

for (int i = 0; i < h.size(); i++) {

int rr = 1e9;

for (int j = 0; j < a.size(); j++) {

rr = min(rr, hh[i][a[j]]);

}

r += rr;

}

ans = min(ans, r);

return;

}


for (int i = ii; i < c.size(); i++) {

a.push_back(c[i].ch); dfs(n+1, i + 1); a.pop_back();

}

return;

}


int main() {

std::ios::sync_with_stdio(false); cin.tie(0);

cin >> N >> M; ans = 1e9;

int cnt = 0;

for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) {

cin >> tmp; 

if (tmp == 1) h.push_back({ i,j,0 });

else if (tmp == 2) c.push_back({i,j,cnt++});

}

hh.resize(h.size());

int r = 0;

for (int i = 0; i < h.size(); i++) for (int j = 0; j < c.size(); j++) 

hh[i].push_back(abs(h[i].c - c[j].c) + abs(h[i].r - c[j].r));

dfs(0,0);


cout << ans;

return 0;

}


'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ 16236] 아기 상어  (0) 2019.01.09
[BOJ 5373] 큐빙  (2) 2018.10.25
[BOJ 15685] 드래곤 커브  (0) 2018.10.07
[BOJ 14499] 주사위 굴리기  (0) 2018.10.04
[BOJ 7576] 토마토  (0) 2018.10.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함