a bit offtopic, but this line
while(!q.empty()) q.pop();
is needless.
and the function is dangerous because of:
path[s] = -1;
It would be better to add an assertion that s >=0 && s <= 414, or perform an explicit checking.
If someone invoke this function, passing "s", say, 415, it will crash
back to the topic:
your implementation solves the problem:
"is it possible to get to the destination point/place from the start point?"
so, it is a boolean function (I don't take into account that your function returns void, let's assume it returns a boolean value).
I don't believe this is exactly what you try to achieve, you are rather interested in "is it possible to get to the destination point/place from the start point? and if yes, then give me the list/array of the steps one should perform to achieve that".
In other words, it should return some kind of std::vector<Coordinate/Point/Ints/Tiles Indexes/etc> as a result.
Hope that helps.