Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
51603 | raoyueyang | 最优子图 | C++ | 运行超时 | 30 | 2000 MS | 3224 KB | 829 | 2022-07-13 11:55:56 |
#include <bits/stdc++.h> using namespace std; int n,k; int a[10000][10000]; bool color[100000]; int red,blue,maxans,ans; void go() { red = 0,blue = 0,ans = 0; for(int i=0; i<n; i++) { if(color[i] == 1)red++; else blue++; } if(red == 0 || blue == 0) return; for(int i=0; i<n; i++) for(int j=i; j<n; j++) { if(color[i] == color[j]) ans += a[i][j]; else ans += (k-a[i][j]); } maxans = max(ans,maxans); } void dfs(int a) { if(a == n) { go(); return; } else { color[a+1] = 1; dfs(a+1); color[a+1] = 0; dfs(a+1); } } int main() { cin >> n >> k; for(int i=0; i<n; i++) for(int j=0; j<n; j++) cin >> a[i][j]; dfs(0); cout << maxans <<endl; return 0; }