比赛 |
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;
}