"I output "impossible" iff my max-flow algorithm returns -1, which should only happen if the BFS at the start of the algorithm does not discover all nodes"
I think this is not correct. The fact that some nodes are unreachable does not mean that target node (n) is not reachable from sink node (1). You should return -1 only if BFS does not discover target node n.
Also, note that all roads have capacity at least 1 (see constraints), so if there is a path from sink to target, the max flow would be at least 1. This suggest you dont even need the extra check with BFS, just run max flow right away, if the flow is less than 1 ==> output impossible.