#include <bits/stdc++.h>
using namespace std;
const int N = 25;
int n,v[N],ans = 0,pre[N];
vector<int> a[N];
bool used[N];
void dfs(int s,int w,int num)//s表示目前所在的点,w表示总地雷数
{
for (int i = 0;i < a[s].size();i++)
{
if (!used[a[s][i]])
{
used[a[s][i]] = 1;
dfs(a[s][i],w+v[a[s][i]],num+1);
used[a[s][i]] = 0;
}
}
}
int main()
{
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> v[i];
}
int op;
for (int i = 1;i < n;i++)
{
for (int j = i+1;j <= n;j++)
{
cin >> op;
if (op == 1)
{
a[i].push_back(j);
a[j].push_back(i);
}
}
}
for (int i = 1;i <= n;i++)
{
ans = v[i];
memset(used,0,sizeof(used));
used[i] = 1;
dfs(i,v[i],1);
used[i] = 0;
}//路径还没写,只有结果
cout << ans << endl;
return 0;
}
各位能帮忙看一下为什么最大地雷数不对吗?谢谢啦。