procedure ParallelAstar(s, t, k)
{Find the shortest path from s to t with k queues}
	Let {Qi} where i=1 to k be the priority queues of the open list
	Let H be the closed list
	PUSH(Q1, s)
	m <- nil {m stores the best target state}
	while Q is not empty do
		Let S be an empty list
		for i 1 to k in parallel do
			if Qi is empty then
				continue
			end if
			qi <- EXTRACT(Qi)
			if qi.node = t then
				if m = nil or f(qi) < f(m) then
					m <- qi
				end if
				continue
			end if
			S <- S + EXPAND(qi)
		end for
		if m =/= nil and f(m) ≤ minq BELONGS TO Q f(q) then
			return the path generated from m
		end if
		T <- S
		for s' BELONGS TO S in parallel do
			if s'.node BELONGS TO H and H[s'.node].g < s'.g then
				remove s' from T
			end if
		end for
		for t' BELONGS TO T in parallel do
			t'.f <- f(t')
			Push t' to one of priority queues
			H[t'.node] <- t'
		end for
	end while
end procedure