#include <iostream>
#include <queue>
#define MAX 100001
using namespace std;
int N,K; //N= μλΉμ΄κ° μλ μμΉ, K= λμμ΄ μλ μμΉ
int short_time=MAX,cnt;
int visited[MAX];
void bfs(int start,int time){
queue<pair<int,int>>q;
q.push({start,0});
visited[start]=1;
while(!q.empty()){
int start=q.front().first;
int time=q.front().second;
q.pop();
visited[start]=1;
if(cnt&&short_time==time&&start==K){
cnt++; //μ΅μ μκ°μΌλ‘ μλΉμ΄κ° λμμ΄ μλ μμΉμ λ λμ°©νμλ μΉ΄μ΄νΈ μΆκ°
}
if(!cnt&&start==K&&short_time){ //μ΅μ΄λ‘ μλΉμ΄κ° λμμ΄ μλ μμΉμ λμ°©νμ λ
short_time=time;
cnt++;
}
if(start+1<MAX&&!visited[start+1]) q.push({start+1,time+1}); //μλΉμ΄κ° κ±Έμλ
if(start-1<MAX&&!visited[start-1]) q.push({start-1,time+1}); //μλΉμ΄κ° κ±Έμλ
if(start*2<MAX&&!visited[start*2]) q.push({start*2,time+1}); //μλΉμ΄κ° μκ°μ΄λ ν λ
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N>>K;
bfs(N,0);
cout<<short_time<<'\n'<<cnt;
}
'Algorithm π§π»βπ» > λ°±μ€(BOJ)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€,c++] 13023λ² - ABCDE (0) | 2021.11.04 |
---|---|
[λ°±μ€,c++] 1302λ² - λ² μ€νΈμ λ¬ (0) | 2021.11.04 |
[λ°±μ€,c++] 1292λ² - μ½κ² νΈλ λ¬Έμ (0) | 2021.11.04 |
[λ°±μ€,c++] 12813λ² - μ΄μ§μ μ°μ° (0) | 2021.11.02 |
[λ°±μ€,c++] 12738λ² - κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄3 (0) | 2021.11.02 |
[λ°±μ€,c++] 1264λ² - λͺ¨μμ κ°μ (0) | 2021.11.02 |
λκΈ