Submission #70008973
Source Code Expand
Copy
#include <stdio.h>int N;int next[16];int A[16][16];int memo[1 << 16];int calc(int status) {int num = 0;int next_candidate = 0;int ans = 0;int i;/* N部屋埋まっている場合、下のループでcalcを呼び出さないので、チェックなしでおk */if (memo[status]) return ~memo[status];for (i = 0; i < N; i++) {if ((status >> i) & 1) {num++;next_candidate |= next[i];}}
#include <stdio.h>
int N;
int next[16];
int A[16][16];
int memo[1 << 16];
int calc(int status) {
int num = 0;
int next_candidate = 0;
int ans = 0;
int i;
/* N部屋埋まっている場合、下のループでcalcを呼び出さないので、チェックなしでおk */
if (memo[status]) return ~memo[status];
for (i = 0; i < N; i++) {
if ((status >> i) & 1) {
num++;
next_candidate |= next[i];
}
}
next_candidate &= ~status;
for (i = 0; i < N; i++) {
if ((next_candidate >> i) & 1) {
int candidate = calc(status | (1 << i)) + A[num][i];
if (candidate > ans) ans = candidate;
}
}
return ~(memo[status] = ~ans);
}
int main(void) {
int M;
int i, j;
if (scanf("%d%d", &N, &M) != 2) return 1;
for (i = 0; i < M; i++) {
int U, V;
if (scanf("%d%d", &U, &V) != 2) return 1;
next[U - 1] |= 1 << (V - 1);
next[V - 1] |= 1 << (U - 1);
}
for (i = 1; i < N; i++) {
for (j = 0; j < N; j++) {
if (scanf("%d", &A[i][j]) != 1) return 1;
}
}
printf("%d\n", calc(1));
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - 進撃のパ研 |
| User | mikecat |
| Language | C (gcc 12.2.0) |
| Score | 400 |
| Code Size | 1075 Byte |
| Status | AC |
| Exec Time | 2 ms |
| Memory | 1872 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example0.txt, example1.txt |
| All | corner0.txt, example0.txt, example1.txt, maximum0.txt, maximum1.txt, maximum2.txt, maximum3.txt, maximum4.txt, maximum5.txt, maximum6.txt, maximum7.txt, minimum0.txt, random0.txt, random1.txt, random2.txt, random3.txt, random4.txt, random5.txt, random6.txt, random7.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| corner0.txt | AC | 1 ms | 1736 KiB |
| example0.txt | AC | 1 ms | 1576 KiB |
| example1.txt | AC | 1 ms | 1632 KiB |
| maximum0.txt | AC | 2 ms | 1720 KiB |
| maximum1.txt | AC | 2 ms | 1852 KiB |
| maximum2.txt | AC | 2 ms | 1840 KiB |
| maximum3.txt | AC | 2 ms | 1752 KiB |
| maximum4.txt | AC | 2 ms | 1856 KiB |
| maximum5.txt | AC | 2 ms | 1720 KiB |
| maximum6.txt | AC | 2 ms | 1724 KiB |
| maximum7.txt | AC | 2 ms | 1872 KiB |
| minimum0.txt | AC | 1 ms | 1732 KiB |
| random0.txt | AC | 1 ms | 1744 KiB |
| random1.txt | AC | 1 ms | 1664 KiB |
| random2.txt | AC | 1 ms | 1576 KiB |
| random3.txt | AC | 1 ms | 1612 KiB |
| random4.txt | AC | 1 ms | 1684 KiB |
| random5.txt | AC | 1 ms | 1624 KiB |
| random6.txt | AC | 1 ms | 1708 KiB |
| random7.txt | AC | 1 ms | 1636 KiB |