QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#878865#3301. Economic One-way RoadsSunsetGlow95WA 11ms337436kbC++141.5kb2025-02-01 18:25:362025-02-01 18:25:42

Judging History

This is the latest submission verdict.

  • [2025-02-01 18:25:42]
  • Judged
  • Verdict: WA
  • Time: 11ms
  • Memory: 337436kb
  • [2025-02-01 18:25:36]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

const int MXN = 18;
const int INF = 0x3f3f3f3f;
int T, N;
int val[MXN][MXN], cst[1 << MXN][MXN];
int pro[1 << MXN][MXN][MXN], fin[1 << MXN];

int main() {
  cin >> N;
  memset(val, INF, sizeof val);
  for (int i(0); i != N; ++i)
    for (int j(0); j != N; ++j) cin >> val[i][j];
  for (int i(0); i != (1 << N); ++i)
    for (int j(0); j != N; ++j)
      for (int k(0); k != N; ++k)
        if (i & (1 << k) && ~val[j][k])
          cst[i][j] += min(val[j][k], val[k][j]);
  memset(pro, INF, sizeof pro);
  memset(fin, INF, sizeof fin);
  for (int i(0); i != N; ++i) fin[1 << i] = 0;
  for (int s(1); s != (1 << N); ++s) {
    for (int p(0); p != N; ++p) {
      if (!(s & (1 << p))) continue;
      for (int q(0); q != N; ++q) {
        if (!(s & (1 << q))) continue;
        for (int r(0); r != N; ++r) {
          if (s & (1 << r)) continue;
          if (p != q && ~val[q][r] && ~val[r][p])
            fin[s | (1 << r)] =
              min<unsigned>(fin[s | (1 << r)],
                  min<unsigned>(fin[s], pro[s][p][q]) + val[q][r] + val[r][p] +
                  cst[s ^ (1 << p) ^ (1 << q)][r]);
          if (~val[q][r])
            pro[s | (1 << r)][p][r] =
              min<unsigned>(pro[s | (1 << r)][p][r],
                  min<unsigned>(fin[s], pro[s][p][q]) + val[q][r] +
                  cst[s ^ (1 << q)][r]);
        }
      }
    }
  }
  cout << fin[(1 << N) - 1] << endl;
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 11ms
memory: 337436kb

input:

4
-1 3 2 -1
3 -1 7 7
5 9 -1 9
-1 6 7 -1

output:

27

result:

ok single line: '27'

Test #2:

score: -100
Wrong Answer
time: 8ms
memory: 337316kb

input:

6
-1 1 2 -1 -1 -1
3 -1 4 -1 -1 -1
5 6 -1 0 -1 -1
-1 -1 0 -1 6 5
-1 -1 -1 4 -1 3
-1 -1 -1 2 1 -1

output:

1061109567

result:

wrong answer 1st lines differ - expected: '-1', found: '1061109567'