求一棵树上是否存在路径长度为K的点对。
POJ 1714求得是路径权值<=K的路径条数,这题只需要更改一下统计路径条数的函数即可,如果最终的路径条数大于零,则说明存在这样的路径。
刚开始我以为只要在分治过程中出现过长度为K的就算是找到了,其实不然,因为可能是相同子树里面的两个结点,这个结果显然是错误的。
#include#include #include #include using namespace std; struct node { int v, l; node() {}; node(int _v, int _l):v(_v), l(_l) {}; }; #define N 10015 int n, m, K, size, root, s[N], f[N], d[N], ans; bool done[N], ok; vector dep; vector g[N]; void getroot(int now, int fa) { int u; s[now] = 1; f[now] = 0; for (int i=0; i