The former is impossible as others pointed out since you'd need to control all nodes or see what they receive (like being their ISP).
The later on the other hand is possible but harder. You could increase the number of nodes you connect to to a large number and send one your transaction. Then wait to see how long it takes for the other nodes to start giving you INV messages containing your transaction hash. That way you could come up with an approximate amount of time it takes to propagate the transaction in bitcoin network.
The problem however is that nodes don't immediately send out INV messages to other nodes, they add certain delays and also I believe they send INV to a random node from their total connected nodes in small intervals. In other words the time you come up with has some intentional added delays in it.
Here is a paper from 2016: https://www.researchgate.net/publication/303183824_Bitcoin_Network_Measurements_for_Simulation_Validation_and_Parameterisation
Node C (even though it received 3rd) could send Bob the transaction sooner than node B due to the delays I mentioned. Bob can not conclude that the hop was from A to C then to B.