aboutsummaryrefslogtreecommitdiff
path: root/works/life/algorithm-experiment/3.1.cpp
blob: 1796dc314f2b1f33445f7fca7e5aeb8511065576 (plain)
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
32
33
34
35
36
37
38
#include <dlib/optimization/max_cost_assignment.h>
#include <iostream>
#include <vector>

#include <dlib/optimization.h>

int main() {
  int n;
  std::cin >> n;

  dlib::matrix<int> matrix(n, n);

  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      int l;
      std::cin >> l;
      matrix(i, j) = -l;
    }
  }

  auto result = dlib::max_cost_assignment(matrix);

  for (auto i : result) {
    std::cout << i << ' ';
  }

  std::cout << '\n';

  int sum = 0;

  for (int i = 0; i < n; i++) {
    sum += matrix(i, result[i]);
  }

  std::cout << sum;

  return 0;
}