90pts,求助
查看原帖
90pts,求助
717971
liuyi0905楼主2023/6/17 11:59

向大佬们求助。
90pts,第七个点 WA\tt\colorbox{red}{\textcolor{white}{WA}}。

#include<bits/stdc++.h>
#define N 50
using namespace std;
int v,g,vv[N],gg[N][N],ans[N],sum,vis[N],mini=1e9;
queue<int>q;
void dfs(int x){
	if(x>g){
		for(int i=1;i<=v;i++){
			if(ans[i]<vv[i])return;
		}
		if(sum<mini){
			while(!q.empty())q.pop();
			mini=sum;
			for(int i=1;i<=v;i++){
				if(vis[i])q.push(i);
			}
		}
		return;	
	}
	for(int i=1;i<=v;i++)ans[i]+=gg[x][i];
	sum++;
	vis[x]=1;
	dfs(x+1);
	for(int i=1;i<=v;i++)ans[i]-=gg[x][i];
	sum--;
	vis[x]=0;
	dfs(x+1);
}
int main(){
	cin>>v;
	for(int i=1;i<=v;i++)cin>>vv[i];
	cin>>g;
	for(int i=1;i<=g;i++){
		for(int j=1;j<=v;j++)cin>>gg[i][j];
	}
	dfs(1);
	cout<<mini<<" ";
	while(!q.empty()){
		cout<<q.front()<<" ";
		q.pop();
	}
	return 0;
}
2023/6/17 11:59
加载中...