Distance queries on Tree with hotspots
You can use the top-tree data structure.
It maintains a forest $F$ on $n$ nodes and supports (among others) each of the following operations in $O(\log n)$ time per operation:


Given an unmarked vertex $v$ mark $v$.
Given a marked vertex $v$ unmark $v$.
Given two vertices $u,v$ that belong to two different trees in $F$, add the edge $(u,v)$ to $F$ (thus merging two trees into one).
Given an edge $(u,v)$ of a tree in $F$, delete $(u,v)$ from $F$ (thus splitting the three into two).
Given a vertex $v$, report the distance to the marked vertex that belongs to the tree of $v$ and is closest to $v$.


This allows you to preprocess your tree in time $O(n \log n)$: build the forest $F$ on $n$ nodes by adding the edges of the tree one by one (so that, at the end, $F$ contains the input tree), then mark each hotspot.

To answer a query $(a,b,c)$ in time $O(\log n)$ proceed as follows:


Delete $(a,b)$ from $F$ in time $O(\log n)$.
Find the distance $d$ to the marked vertex that is closest to $c$. This takes $O(\log n)$ time and is exactly the answer to the query.
Re-add $(a,b)$ to $F$ in time $O(\log n)$.
Return $d$.