#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 20;
typedef pair<int,int> PII;
vector<PII>vec;
int w[N][N];
bool st[N];
int n;
int dfs(int u)
{
if(u==n)
{
int ret=0;
for(auto p:vec)ret^=w[p.first][p.second];
return ret;
}
int l;
for(int i=1;i<=2*n;i++)
if(!st[i])
{
l=i;break;
}
st[l]=true;
int ret=0;
for(int i=1;i<=2*n;i++)
{
if(!st[i])
{
vec.push_back({l,i});
st[i]=true;
ret=max(ret,dfs(u+1));
vec.pop_back();
st[i]=false;
}
}
st[l]=false;
return ret;
}
int main()
{
cin>>n;
for(int i=1;i<2*n;i++)
{
for(int j=i+1;j<=2*n;j++)
{
cin>>w[i][j];
}
}
cout<<dfs(0)<<endl;
}
AtCoder Beginner Contest 236---D - Dance----dfs
最新推荐文章于 2022-10-27 00:42:28 发布