#include <bits/stdc++.h>
using namespace std;
int number_operations[101];
int _set[] = {1, 5, 7, 10};
void bfs(){
queue<int> q;
// initialize
for (int i = 0; i < 101; i++)
number_operations[i] = 1<<30;
q.push(0);
number_operations[0] = 0;
// do BFS
while (!q.empty()){
int v = q.front();
q.pop();
for (int i = 0; i < 4; i++){
int _new = v + _set[i];
if (_new > 100) // set a max number to find
continue;
if (number_operations[v] + 1 < number_operations[_new]){
number_operations[_new] = number_operations[v] + 1;
q.push(_new);
}
}
}
}
int main(){
bfs();
// 9*10 + 1*7 + 1*1
printf ("number of operations to reach %d is %d\n", 98, number_operations[98]);
printf ("number of operations to reach %d is %d", 12, number_operations[12]);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG51bWJlcl9vcGVyYXRpb25zWzEwMV07CmludCBfc2V0W10gPSB7MSwgNSwgNywgMTB9OwoKdm9pZCBiZnMoKXsKICAgIHF1ZXVlPGludD4gcTsKCiAgICAvLyBpbml0aWFsaXplCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMTsgaSsrKQogICAgICAgIG51bWJlcl9vcGVyYXRpb25zW2ldID0gMTw8MzA7CgogICAgcS5wdXNoKDApOwogICAgbnVtYmVyX29wZXJhdGlvbnNbMF0gPSAwOwoKICAgIC8vIGRvIEJGUwogICAgd2hpbGUgKCFxLmVtcHR5KCkpewoKICAgICAgICBpbnQgdiA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKXsKICAgICAgICAgICAgaW50IF9uZXcgPSB2ICsgX3NldFtpXTsKCiAgICAgICAgICAgIGlmIChfbmV3ID4gMTAwKSAvLyBzZXQgYSBtYXggbnVtYmVyIHRvIGZpbmQKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYgKG51bWJlcl9vcGVyYXRpb25zW3ZdICsgMSA8IG51bWJlcl9vcGVyYXRpb25zW19uZXddKXsKICAgICAgICAgICAgICAgIG51bWJlcl9vcGVyYXRpb25zW19uZXddID0gbnVtYmVyX29wZXJhdGlvbnNbdl0gKyAxOwogICAgICAgICAgICAgICAgcS5wdXNoKF9uZXcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0KfQoKaW50IG1haW4oKXsKCgogICAgYmZzKCk7CiAgICAvLyA5KjEwICsgMSo3ICsgMSoxCiAgICBwcmludGYgKCJudW1iZXIgb2Ygb3BlcmF0aW9ucyB0byByZWFjaCAlZCBpcyAlZFxuIiwgOTgsIG51bWJlcl9vcGVyYXRpb25zWzk4XSk7CiAgICBwcmludGYgKCJudW1iZXIgb2Ygb3BlcmF0aW9ucyB0byByZWFjaCAlZCBpcyAlZCIsIDEyLCBudW1iZXJfb3BlcmF0aW9uc1sxMl0pOwp9Cg==