#include<iostream>
const int inf=1000;
const int N=16;
int a[N][N],p[N];
int n,m;
bool b[N];
int main()
{
int t,nt,min,i,j,k,u,v,coun;
i=0;
while(i<N)
{
p[i]=1<<i;
i++;
}
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
i=0;
while(i<m)
{
scanf("%d%d",&u,&v);
a[u][v]++;
a[v][u]++;
i++;
}
nt=1<<(n-1);
min=inf;
i=0;
while(i<nt)
{
memset(b,false,sizeof(b));
j=0;
while(j<n)
{
if((p[j]|i)==i)
b[j]=true;
j++;
}
coun=0;
u=0;
while(u<n)
{
v=u+1;
while(v<n)
{
if(a[u][v]>0&&b[u]==b[v])
coun+=a[u][v];
v++;
}
u++;
}
if(coun<min)
min=coun;
i++;
}
printf("%d\n",min);
}
return 0;
}
hdoj的3118,
http://acm.hdu.edu.cn/showproblem.php?pid=3118。。感觉没什么错啊。。就是过不了。。