3 MLE ,求调
查看原帖
3 MLE ,求调
778070
tall_buildin楼主2024/7/25 15:45
#include <bits/stdc++.h>
using namespace std;
int n,m;
int vis_ans = 0;
struct point{
	string v;
	int vs;
	int step;
};
string vis = "";
int a[110][15];
//bool check(string vv){
//	for (int i = 0;i<n;i++)
//		if (vv[i] == '1') 
//			return 0;
//	return 1;
//}
int bfs(){
	queue<point> qu;
	qu.push({vis,vis_ans,0});
	while(!qu.empty()){
		point now_n = qu.front();
//		cout<<now_n.step<<"->"<<now_n.v<<""<<now_n.vs<<endl;
		qu.pop();
		if (now_n.vs == 0) return now_n.step;
		now_n.step+=1;
		for (int i=0;i<m;i++){
			point now = now_n;
			for (int j=0;j<n;j++){
				if (now.v[j]=='1'&&a[i][j]==1)now.v[j]='0',now.vs--;
				if (now.v[j]=='0'&&a[i][j]==-1) now.v[j]='1',now.vs++;
			}
			qu.push(now);
			
		}
	}
	return -1;
}

int main(){
	cin>>n>>m;
	for (int i = 0;i<m;i++){
		for (int j = 0;j<n;j++){
			if (i == 0) vis+="1",vis_ans++;
			cin>>a[i][j];
		}
	}
	
	for (int i = 0;i<n;i++){
		bool flag = 0;
		for (int j = 0;j<m;j++){
			if (a[j][i] == 1){
				flag = 1;break;
			}
		}	
		if (flag == 0){
			cout<<"-1";
			return 0;
		}
	}
//	cout<<vis<<" "<<vis_ans<<endl;
	cout<<bfs();
	return 0;
}
2024/7/25 15:45
加载中...