| Task: | Babaza Game |
| Sender: | badr_masaaf |
| Submission time: | 2025-09-01 17:34:01 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.02 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.04 s | details |
| #7 | ACCEPTED | 0.70 s | details |
| #8 | ACCEPTED | 0.27 s | details |
| #9 | ACCEPTED | 0.10 s | details |
| #10 | ACCEPTED | 0.01 s | details |
| #11 | ACCEPTED | 1.13 s | details |
| #12 | ACCEPTED | 0.01 s | details |
| #13 | ACCEPTED | 0.01 s | details |
| #14 | ACCEPTED | 0.04 s | details |
Code
#include <bits/stdc++.h>
using namespace std;
bool isBabaza(const string &s) {
for (int i = 1; i < (int)s.size(); i++) {
if (s[i] == s[i-1]) return false;
}
return true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string start, target;
cin >> start >> target;
int n = start.size();
queue<string> q;
unordered_map<string, string> parent;
q.push(start);
parent[start] = "";
while (!q.empty()) {
string cur = q.front(); q.pop();
if (cur == target) break;
vector<int> diff;
for (int i=0;i<n;i++) if (cur[i]!=target[i]) diff.push_back(i);
int dsz = diff.size();
for (int mask=1; mask < (1<<dsz); mask++) {
bool ok=true;
for (int j=1;j<dsz;j++) {
if ((mask&(1<<j)) && (mask&(1<<(j-1)))) {
if (diff[j]==diff[j-1]+1) { ok=false; break; }
}
}
if (!ok) continue;
string nxt=cur;
for (int j=0;j<dsz;j++) if (mask&(1<<j)) nxt[diff[j]]=target[diff[j]];
if (!isBabaza(nxt)) continue;
if (!parent.count(nxt)) {
parent[nxt]=cur;
q.push(nxt);
}
}
for (int pos=0;pos<n;pos++) if (cur[pos]!=target[pos]) {
for (char c='A';c<='Z';c++) {
if (c==cur[pos] || c==target[pos]) continue;
string nxt=cur;
nxt[pos]=c;
if (!isBabaza(nxt)) continue;
if (!parent.count(nxt)) {
parent[nxt]=cur;
q.push(nxt);
}
}
}
}
vector<string> path;
string cur=target;
while (cur!="") {
path.push_back(cur);
cur=parent[cur];
}
reverse(path.begin(), path.end());
for (auto &w : path) cout << w << "\n";
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| A B |
| correct output |
|---|
| A B |
| user output |
|---|
| A B |
Test 2
Verdict: ACCEPTED
| input |
|---|
| BABAZA BACBCB |
| correct output |
|---|
| BABAZA BACACA BACBCB |
| user output |
|---|
| BABAZA BACACA BACBCB |
Test 3
Verdict: ACCEPTED
| input |
|---|
| AB BA |
| correct output |
|---|
| AB CB CA BA |
| user output |
|---|
| AB CB CA BA |
Test 4
Verdict: ACCEPTED
| input |
|---|
| ABC BCD |
| correct output |
|---|
| ABC DBD DCD BCD |
| user output |
|---|
| ABC ABD ACD BCD |
Test 5
Verdict: ACCEPTED
| input |
|---|
| AXYB CXYD |
| correct output |
|---|
| AXYB CXYD |
| user output |
|---|
| AXYB CXYD |
Test 6
Verdict: ACCEPTED
| input |
|---|
| LMIJLF PAQBMH |
| correct output |
|---|
| LMIJLF PMQJMF PAQBMH |
| user output |
|---|
| LMIJLF PMQJMF PAQBMH |
Test 7
Verdict: ACCEPTED
| input |
|---|
| PNIWLSLIH CRLVPUFHD |
| correct output |
|---|
| PNIWLSLIH CNLWPSFID CRLVPUFHD |
| user output |
|---|
| PNIWLSLIH CNLWPSFID CRLVPUFHD |
Test 8
Verdict: ACCEPTED
| input |
|---|
| ZDYIAVTKL ZJKVXGAUM |
| correct output |
|---|
| ZDYIAVTKL ZJYVAGTUL ZJKVXGAUM |
| user output |
|---|
| ZDYIAVTKL ZJYVAGTUL ZJKVXGAUM |
Test 9
Verdict: ACCEPTED
| input |
|---|
| FBIXISJH NXZIESMG |
| correct output |
|---|
| FBIXISJH NBZXESMH NXZIESMG |
| user output |
|---|
| FBIXISJH NBZXESMH NXZIESMG |
Test 10
Verdict: ACCEPTED
| input |
|---|
| OPGW QJIE |
| correct output |
|---|
| OPGW QPIW QJIE |
| user output |
|---|
| OPGW QPIW QJIE |
Test 11
Verdict: ACCEPTED
| input |
|---|
| DUKNPKQZBL NZPBMOEBIC |
| correct output |
|---|
| DUKNPKQZBL NUPNMKEZIL NZPBMOEBIC |
| user output |
|---|
| DUKNPKQZBL NUPNMKEZIL NZPBMOEBIC |
Test 12
Verdict: ACCEPTED
| input |
|---|
| ZWDTX HZOXI |
| correct output |
|---|
| ZWDTX HWOTI HZOXI |
| user output |
|---|
| ZWDTX HWOTI HZOXI |
Test 13
Verdict: ACCEPTED
| input |
|---|
| URJF ITIQ |
| correct output |
|---|
| URJF IRIF ITIQ |
| user output |
|---|
| URJF IRIF ITIQ |
Test 14
Verdict: ACCEPTED
| input |
|---|
| WYWBWU IRYVBA |
| correct output |
|---|
| WYWBWU WRWVWA IRYVBA |
| user output |
|---|
| WYWBWU WRWVWA IRYVBA |
