斗鸡联赛一共有n只鸡参加,第i只鸡截至目前已经积了a.i分。
接下来还有m场比赛要进行,第i场比赛的对阵双方是编号为u 和v的鸡。积分规则是:胜方加三分,败方不得分,若战平则双方各得一分。
请你计算在最好的情况下,我们的一号选手(炸鸡)能够排到第几名。
注意若有多鸡并列,则排名取并列的排名,且不影响随后的排名(例如两只鸡并列第二名,则都视为第二名,排名其后的下一只鸡视为第四名)。
1<=n,m<=10;
观察到本题数据范围比较小,直接爆搜出所有情况
```
include[HTML_REMOVED]
using namespace std;
int ans=11,t,n,m,num[11],a[11],b[11];
void dfs(int u)
{
if(u==m)
{
int k=1;
for(int i=2;i<=n;i)
if(num[i]>num[1]) k;
ans=min(ans,k);
return ;
}
num[a[u]]+=3,dfs(u+1),num[a[u]]-=3;
num[b[u]]+=3,dfs(u+1),num[b[u]]-=3;
num[a[u]],num[b[u]], dfs(u+1),num[a[u]]–,num[b[u]]–;
}
int main()
{
cin>>t;
while(t–)
{
ans=11;
cin>>n>>m;
for(int i=1;i<=n;i) scanf(“%d”,&num[i]);
for(int i=0;i<m;i) scanf(“%d%d”,&a[i],&b[i]);
dfs(0);
cout<<ans<<endl;
}
}