本题可以用离线LCA法来解决,应用到并查集以及DFS,以及一些编程技巧,详细可见博客 http://blog.csdn.net/yihuikang/article/details/7768808
我的代码就不贴了,看过这篇博客之后,本来开始想自己写的,结果编程能力太差结果各种bug,最后就改得和原博客差不多了,真是蛋疼。。。
不过提醒大家一下,我中间出现的问题,开数组一定要注意,不能用10001,因为这是query的大小,而M的大小是40000,所以最多会有40000条边和40001个点,所以关于点和边的数组一定要开到40000+,而不是10000+,否则会runtime error到你蛋疼。。。