Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
51611 | AK2022071328 | 最优子图 | C++ | 运行出错 | 0 | 0 MS | 256 KB | 933 | 2022-07-13 12:15:16 |
#include <iostream> using namespace std; const int maxn=10000; int w[maxn][maxn]; int n,k; int ans=0; bool color[maxn];//1=red 0=blue void check() { int red=0; int blue=0; int a=0;//ans for(int i=0; i<n; i++) { if(color[i]) { 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])a+=w[i][j]; else a+=(k-w[i][j]); } } ans=max(ans,a); } void dfs(int num) { if(num==n) { check(); return; } else { color[num+1]=1; dfs(num+1); color[num+1]=0; dfs(num+1); } } int main() { freopen("sub.in","r",stdin); freopen("sub.out","w",stdout); cin>>n>>k; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { cin>>w[i][j]; } } dfs(-1); cout<<ans; return 0; }