求助,90分WA#6
查看原帖
求助,90分WA#6
448483
honghaojin楼主2023/5/30 17:07

rt

#include<bits/stdc++.h>
using namespace std;
int a[110][20];
bool vis[1030];
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int n,m,cnt=0;
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		for(int j=1;j<=n;++j){
			cin>>a[i][j];
		}
	}
	queue<pair<int,int> >q;
	q.push(make_pair((1<<n)-1,0)),vis[(1<<n)-1]=1;
	while(!q.empty()){
		int u=q.front().first,d=q.front().second;
//		cout<<u<<' '<<d<<endl;
		for(int i=1;i<=m;++i){
			int v=0;
			for(int j=1,k=u;j<=n;++j,k>>=1){
				v<<=1;
				if(a[i][j]>0){
					v|=0;
				}
				else if(a[i][j]<0){
					v|=1;
				}
				else{
					v|=k&1;
				}
			}
//			cout<<"  "<<v<<endl;
			if(!v){
				cout<<d+1,exit(0);
			}
			if(!vis[v]){
				q.push(make_pair(v,d+1)),vis[v]=1,cnt++;
			}
		}
		q.pop();
	}
	cout<<-1;
	return 0;
}
2023/5/30 17:07
加载中...