题目链接:
https://ac.nowcoder.com/acm/contest/67741/E
思想:dfs
代码:
// Problem: 本题又主要考察了贪心
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/67741/E
// Memory Limit: 524288 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = 2e5+5;
int n,m;
int a[N],b[N];
int res=0;
int ans[N];
void dfs(int k){ //k为当前第几场比赛,枚举每一场选手的胜利情况
if(k==m+1){
int cnt=1;
for(int i=2;i<=n;i++){ //第一位选手的排名
if(ans[i]>ans[1]){
cnt++;
}
}
res=min(res,cnt);
return;
}
ans[a[k]]+=3; //a选手赢
dfs(k+1);
ans[a[k]]-=3;
ans[b[k]]+=3; //b选手赢
dfs(k+1);
ans[b[k]]-=3;
ans[a[k]]+=1; //平局
ans[b[k]]+=1;
dfs(k+1);
ans[a[k]]-=1;
ans[b[k]]-=1;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin>>T;
while(T--){
res=1e9;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>ans[i];
}
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
}
dfs(1);
cout<<res<<"\n";
}
return 0;
}