半年前没调出来的题竟放到了作业题单
所以说不能咕题
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
string s;
struct node
{
int x, step;
};
bool vis[1<<26];
int bfs(int x)
{
queue<node> q;
q.push((node){x,0});
while(!q.empty())
{
auto i=q.front();
q.pop();
int cur=i.x;
int step=i.step;
if(step>=7)break;
if(vis[cur])continue;
if((1<<26)-1==cur)return step;
vis[cur]=1;
for(int i=1;i<=25;i++)
{
int tmp1=i-5, tmp2=i+5, tmp3=i-1, tmp4=i+1, tmp5=step;
if(tmp1>0)
{
tmp5^=(1<<tmp1);
}
if(tmp2<25)
{
tmp5^=(1<<tmp2);
}
if(tmp3%5)
{
tmp5^=(1<<tmp3);
}
if(tmp4%5!=1)
{
tmp5^=(1<<tmp4);
}
q.push((node){tmp5,step+1});
}
}
return -1;
}
signed main()
{
for(cin>>t;t;t--)
{
s="";
for(int i=1;i<26;i++)
{
char x;
cin>>x;
s+=x;
}
// cout<<s<<"\n";
int sum=0, cnt=1;
for(int i=24;i>0;i--)
{
cnt*=2;
sum+=cnt*(s[i]-'0');
}
cout<<bfs(sum)<<"\n";
}
}