ok, it turns out that the same city can be selected.

I lied. It works for return trip as well. The other city is treated as an entirely different one, although this is not a problem, it falls on the data gathering algorithm to design the cost matrix properly.