求助神犇!
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,m,ans=-1;
int val[maxn];
bool vis[maxn];
vector<int> g[maxn];
inline void dfs(int num,int sum) {
if(num==n) {
ans=max(ans,sum);
return;
}
dfs(num+1,sum);
for(int i=0; i<g[num].size(); ++i) {
if(vis[g[num][i]]==false) {
vis[g[num][i]]=true;
dfs(g[num][i],sum+val[g[num][i]]);
vis[g[num][i]]=false;
}
}
}
inline int read() {
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-')w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
signed main() {
std::ios::sync_with_stdio(false);
n=read();
m=read();
for(int i=1; i<=n; ++i) val[i]=read();
while(m--) {
int u,v;
u=read();
v=read();
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1,0);
cout<<ans<<endl;
return 0;
}