样例全过,就是没AC
#include<bits/stdc++.h>
using namespace std;
const long long maxn=15;
long long i,j,n,k,l,ans=1e18,mg,uu[15],vv[15],mh,r,u,tmp,tmgr[maxn][maxn],v,Q,m,g[maxn][maxn],h[maxn][maxn],a[maxn][maxn];
char ch;
bool flag[maxn];
int main()
{
scanf("%lld %lld",&n,&mg);
for(i=1;i<=mg;i++)
{
scanf("%lld %lld",&uu[i],&vv[i]);
g[uu[i]][vv[i]]=1,g[vv[i]][uu[i]]=1;
}
scanf("%lld",&mh);
for(i=1;i<=mh;i++)
{
scanf("%lld %lld",&u,&v);
h[u][v]=1,h[v][u]=1;
}
for(i=1;i<=n-1;i++)
{
for(j=i+1;j<=n;j++)
{
scanf("%lld",&tmp);
a[i][j]=tmp,a[j][i]=tmp;
}
}
vector<long long>num;
for(i=1;i<=n;i++) num.push_back(i);
do
{
long long p[20];
for(i=0;i<n;i++) p[num[i]]=i+1;
//puts("");
long long ret=0;
for(i=1;i<=10;i++) for(j=1;j<=10;j++) tmgr[i][j]=0;
for(i=1;i<=mg;i++)
{
tmgr[p[uu[i]]][p[vv[i]]]=1;
tmgr[p[vv[i]]][p[uu[i]]]=1;
}
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(tmgr[i][j]!=h[i][j]) ret+=a[i][j];
}
}
ans=min(ans,ret);
}while(next_permutation(num.begin(),num.end()));
printf("%lld\n",ans);
return 0;
}
//h->g
悬关!!!