| 比赛 | 
    20241024 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    费解的开关 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    wdsjl | 
    运行时间 | 
    1.072 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    132.14 MiB  | 
    | 提交时间 | 
    2024-10-24 11:12:44 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int ans,x;
short l[1<<26];
int qf(int x,int y){
	x^=(1<<y);
	if(y>4)x^=(1<<(y-5));
	if(y<20) x^=(1<<y+5);
	if(y%5!=0) x^=(1<<y-1);
	if(y%5<4) x^=(1<<(y+1));
	return x;
}
void bfs(){
	memset(l,-1,sizeof l);
	q.push((1<<25)-1);
	l[(1<<25)-1]=0;
	while(!q.empty()){
		int t=q.front();
		q.pop();
		if(l[t]>=6)break;
		for(int i=0;i<25;i++){
			if(l[qf(t,i)]==-1){
				q.push(qf(t,i));
				l[qf(t,i)]=l[t]+1;
			}
		}
	}
	return;
}
int main(){
	freopen("switch.in","r",stdin);
	freopen("switch.out","w",stdout);
	int n;
	cin>>n;
	bfs();
	while(n--){
		int x=0;
		for(int i=0;i<5;i++){
			for(int j=0;j<5;j++){
				int t;
				scanf("%1d",&t);
				if(t) x=x|(1<<(i*5+j));
			}
		}
		cout<<l[x]<<endl;
	}
	return 0;
}