AtCoder Regular Contest #001 B : リモコン

問題概要

幅優先探索で距離を求める問題。

acceptされたコード

queueがなかったので富豪的に配列で代用した。

import std.stdio;
import std.algorithm;

immutable MAX_T = 40;
immutable dts = [1,5,10,-1,-5,-10];

int A, B;

void init(){
	scanf("%d%d", &A, &B);
}

int solve(){
	int[int] dist;
	int[] queue;
	dist[A] = 0;
	queue ~= A;
	
	for(;queue.length;){
		int t = queue[0];
		queue = queue[1..queue.length];
		
		foreach(dt ; dts){
			int nt = t + dt;
			if(-MAX_T <= nt && nt <= 2*MAX_T && !(nt in dist)){
				dist[nt] = dist[t] + 1;
				queue ~= nt;
			}
		}
	}
	return dist[B];
}

void main(){
	init;
	writeln(solve);
}