https://www.acmicpc.net/problem/16928
100칸에 도착하기 위해 주사위를 굴려야 하는 횟수의 최솟값
=>(queue)사용 BFS
C++풀이
int mve[102] = 뱀/사다리로 이동하는 구간 정보 저장(기본값으로 해당 위치)
int N,M;
int mve[102];
int visited[102];
int main()
{
cin>>N>>M;
for(int i=1;i<101;i++){
mve[i]=i;
visited[i]=-1;
}
for(int i=0;i<N+M;i++){
int x,y;
cin>>x>>y;
mve[x]=y;
}
queue<int> q;
q.push(1);
visited[1]=0;
while(!q.empty()){
int cur = q.front();
q.pop();
for(int i=1;i<=6;i++){
int nxt = cur +i;
if(nxt>100) continue;
nxt= mve[nxt];//사다리 or 뱀 이동
if(visited[nxt]==-1){//방문한적 없는 경우
visited[nxt] = visited[cur]+1;
q.push(nxt);
}
}
}
cout<<visited[100];
}