Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
51577 tengzifan 最优子图 C++ 运行超时 0 2000 MS 4220 KB 1218 2022-07-13 11:53:40

Tests(0/20):


#include <bits/stdc++.h> using namespace std; const int maxn=505; long long n,k,ans,y,b; long long w[maxn][maxn]; long long e[maxn][maxn]; bool f[maxn]; void dfs(int x) { if(x==n) { if(b==0 || y==0) return ; long long sum=0; for(int i=1; i<=2*n; ++i) { for(int j=i+1; j<=n*2; ++j) { if(f[i] && f[j]) { sum+=e[i][j]; } } } /*if(sum==139) { for(int i=1; i<=2*n; ++i) if(f[i]) printf("%d\n",i); }*/ ans=max(ans,sum); return ; } for(int i=1; i<=2*n; ++i) { if(!f[i]) { f[i]=1; (i>n?b++:y++); dfs(x+1); (i>n?b--:y--); f[i]=0; } } } int main() { // freopen("sub.in","r",stdin); //freopen("sub.out","w",stdout); scanf("%lld%lld",&n,&k); for(int i=1; i<=n; ++i) { for(int j=1; j<=n; ++j) { scanf("%lld",&e[i][j]); e[i+n][j+n]=e[i][j]; if(e[i][j]) e[i+n][j] = e[i][j+n] = k - e[i][j]; } } dfs(0); /*for(int i=1; i<=2*n; ++i) { for(int j=1; j<=2*n; ++j) { printf("%d ",e[i][j]); } printf("\n"); }*/ printf("%lld",ans); return 0; }


测评信息: