#include <bits/stdc++.h> using namespace std; typedef long long ll; struct but{ int a; int b; int c; int il; }; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int ba,bb,bc; int a,b,c,k,przel; cin>>ba>>bb>>bc; cin>>a>>b>>c; vector <int> wyn(bc+1,-1); queue <but> kol; but e; set<tuple <int,int,int>> zb; kol.push({a,b,c,0}); int j=0; for (j=0;j<10000000;j++){ if (kol.empty()) break; e=kol.front(); kol.pop(); a=e.a; b=e.b; c=e.c; k=e.il; if (zb.find({a,b,c}) == zb.end()){ zb.insert({a,b,c}); }else{ continue; } if (wyn[a]==-1) wyn[a]=k; if (wyn[b]==-1) wyn[b]=k; if (wyn[c]==-1) wyn[c]=k; //A->B przel=min(a,bb-b); if (przel) kol.push({a-przel,b+przel,c,k+1}); //A->C przel=min(a,bc-c); if (przel) kol.push({a-przel,b,c+przel,k+1}); //B->A przel=min(b,ba-a); if (przel) kol.push({a+przel,b-przel,c,k+1}); //B->C przel=min(b,bc-c); if (przel) kol.push({a,b-przel,c+przel,k+1}); // C->A przel=min(c,ba-a); if (przel) kol.push({a+przel,b,c-przel,k+1}); // C->B przel=min(c,bb-b); if (przel) kol.push({a,b+przel,c-przel,k+1}); } // cout<<j<<endl; for (int i=0;i<=bc;i++){ cout<<wyn[i]<<" "; } cout<<"\n"; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <bits/stdc++.h> using namespace std; typedef long long ll; struct but{ int a; int b; int c; int il; }; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int ba,bb,bc; int a,b,c,k,przel; cin>>ba>>bb>>bc; cin>>a>>b>>c; vector <int> wyn(bc+1,-1); queue <but> kol; but e; set<tuple <int,int,int>> zb; kol.push({a,b,c,0}); int j=0; for (j=0;j<10000000;j++){ if (kol.empty()) break; e=kol.front(); kol.pop(); a=e.a; b=e.b; c=e.c; k=e.il; if (zb.find({a,b,c}) == zb.end()){ zb.insert({a,b,c}); }else{ continue; } if (wyn[a]==-1) wyn[a]=k; if (wyn[b]==-1) wyn[b]=k; if (wyn[c]==-1) wyn[c]=k; //A->B przel=min(a,bb-b); if (przel) kol.push({a-przel,b+przel,c,k+1}); //A->C przel=min(a,bc-c); if (przel) kol.push({a-przel,b,c+przel,k+1}); //B->A przel=min(b,ba-a); if (przel) kol.push({a+przel,b-przel,c,k+1}); //B->C przel=min(b,bc-c); if (przel) kol.push({a,b-przel,c+przel,k+1}); // C->A przel=min(c,ba-a); if (przel) kol.push({a+przel,b,c-przel,k+1}); // C->B przel=min(c,bb-b); if (przel) kol.push({a,b+przel,c-przel,k+1}); } // cout<<j<<endl; for (int i=0;i<=bc;i++){ cout<<wyn[i]<<" "; } cout<<"\n"; return 0; } |