好心人帮忙看看为什么会WA
#include<bits/stdc++.h>
using namespace std;
int a[20];
int x,y,T,n,i,sum,ans;
void sc(int pp)
{
int b[200];
for (int i=0;i<=20;i++) b[i]=0;
int i,o1=0,j,k,w;
if (pp>=sum) return ;
if (pp>=10) return;
for (i=0;i<=13;i++)
if (a[i]>0) o1+=1;
if (pp+o1<sum) sum=pp+o1;
for (i=1;i<=13;i++)
if (a[i]==3)
{
for (j=0;j<=13;j++)
if ((j!=i)&(a[j]>=1))
{
a[i]-=3;a[j]-=1;
sc(pp+1);
a[i]+=3;a[j]+=1;
}
}
for (i=1;i<=13;i++)
if (a[i]==3)
{
for (j=1;j<=13;j++)
if ((j!=i)&(a[j]>=2))
{
a[i]-=3;a[j]-=2;
sc(pp+1);
a[i]+=3;a[j]+=2;
}
}
for (i=1;i<=13;i++)
if (a[i]==4)
{
int w2=0;
for (j=1;j<=13;j++)
if ((j!=i)&(a[j]>=2))
{
a[i]-=4;a[j]-=2;
sc(pp+1);a[i]+=4;a[j]+=2;
}
for (j=0;j<=13;j++)
if ((j!=i)&(a[j]>=1))
{
w2++;b[w2]=j;
for (k=1;k<w2;k++)
{
a[i]-=4;a[b[w2]]-=1;a[b[k]]-=1;
sc(pp+1);
a[i]+=4;a[b[w2]]+=1;a[b[k]]+=1;
}
}
}
int c[200];
for (i=1;i<=13;i++)
if (a[i]==4)
{
int w1=0;
for (j=1;j<=13;j++)
if ((j!=i)&(a[j]>=4))
{
a[i]-=4;a[j]-=4;
sc(pp+1);a[i]+=4;a[j]+=4;
}
for (j=1;j<=13;j++)
if ((j!=i)&(a[j]>=2))
{
w1++;c[w1]=j;
for (k=1;k<w1;k++)
{
a[i]-=4;a[c[w1]]-=2;a[c[k]]-=2;
sc(pp+1);
a[i]+=4;a[c[w1]]+=2;a[c[k]]+=2;
}
}
}
bool flag;
for (j=3;j<=10;j++)
{
int k=j,kk1=0;
while (k!=2)
{
if (a[k]>0)
{
a[k]--;kk1++;
if (kk1>=5) sc(pp+1);
}
else break;
k=k % 13+1;
}
int kkk1=0;k=j;
while (kkk1<kk1)
{
a[k]++;k=k % 13+1;kkk1++;
}
}
for (j=3;j<=12;j++)
{
int k=j,kk2=0;
while (k!=2)
{
if (a[k]>1)
{
a[k]-=2;kk2++;
if (kk2>=3) sc(pp+1);
}
else break;
k=k % 13+1;
}
int kkk2=0;k=j;
while (kkk2<kk2)
{
a[k]+=2;k=k % 13+1;kkk2++;
}
}
for (j=3;j<=13;j++)
{
int k=j,kk3=0;
while (k!=2)
{
if (a[k]>2)
{
a[k]-=3;kk3++;
if (kk3>=3) sc(pp+1);
}
else break;
k=k % 13+1;
}
int kkk3=0;k=j;
while (kkk3<kk3)
{
a[k]+=3;k=k % 13+1;kkk3++;
}
}
}
int main()
{
//freopen("P2668.in","r",stdin);
//freopen("P2668.out","w",stdout);
cin>>T>>n;
for (;T;T--)
{
for (i=0;i<=13;i++) a[i]=0;
ans=0;
for (i=1;i<=n;i++)
{
cin>>x>>y;
a[x]++;
}
sum=100000000;
sc(ans);
cout<<sum<<endl;
}
return 0;
}