提交时间:2024-01-23 16:08:00

运行 ID: 124895

#include <bits/stdc++.h> #pragma GCC optimize(2) using namespace std; vector<int> a(10); vector<int> b(10); queue<pair<vector<int>,string> > q; int dx[10][10] = {{},{0,1,1,0,1,1,0,0,0,0},{0,1,1,1,0,0,0,0,0,0},{0,0,1,1,0,1,1,0,0,0},{0,1,0,0,1,0,0,1,0,0}, {0,0,1,0,1,1,1,0,1,0},{0,0,0,1,0,0,1,0,0,1},{0,0,0,0,1,1,0,1,1,0},{0,0,0,0,0,0,0,1,1,1},{0,0,0,0,0,1,1,0,1,1}}; map<vector<int>,bool> vis; inline int read() { register int res = 0,f = 1; char c = getchar(); while (!isdigit(c)) { if (c == '-') f = -1; c = getchar(); } while (isdigit(c)) { res = (res << 1) + (res << 3) + (c ^ 48); c = getchar(); } return res * f; } signed main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); for (register int i = 1; i <= 9; i++) a[i]=read(); q.push({a,""}); while (q.size()){ a=q.front().first; string s=q.front().second; q.pop(); bool flag=true; for (register int i=1;i<=9;i++) if (a[i]!=0){ flag=false; break; } if (flag){ cout<<s<<endl; break; } for(register int i = 1; i <= 9; i++){ for (register int j=1;j<=9;j++) b[j] = (a[j] + dx[i][j]) % 4; if (!vis[b]){ q.push({b,s+(char)(i+'0')}); vis[b]=true; } } } return 0; }