树的直径又称树上最长的路,结论为从某一点搜出最长的路径一定是s或t点,再用一次搜索就会找出树的直径
只要运用的就是反证法。
现在假设s到t是树的直径。
取某一点u,搜到的最远点为x;
1. u在s-t路径上:
如果u在直径上,那么下一步肯定会搜到直径的某点,(如果,不是直径的某点的话,那么,dis(u,x)+dis(s+x)就会大于dis(s,t)这样就会与假设相违背)成立。
2. u不在s-t路径上:
(1)u最后走到了是s-t这条路上,那么x最后为s或t的某一点,则直径为dis(u,x)+dis(x,s);
(2)u走到最远点的路径u-T与s-t无交点,则dis(u-T) >dis(u,X)+dis(X,t);显然,如果这个式子成立,
则dis(u,T)+dis(s,X)+dis(u,X)>dis(s,X)+dis(X,t)=dis(s,t)最长路不是s-t矛盾;