题意
求一棵树上,以每个点为起点的第k短路径
双倍经验三倍经验啊
对于每一个点,二分答案,那么只要判断与当前点距离小于等于二分出来的答案的点的个数是否等于k就行了
复杂度nlog^3n,数据点应该不多……
表示树上倍增常数太大了……
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <ctime>
#define N 100010
using namespace std;
int n,k,u,v,w,cnt,root,Max,isize,cnt0,Root;
int G[N],vis[N],iG[N],fa[N],dpt[N],far[N],disr[N];
int p[N][20],Dis[N][20];
struct edge{
int t,nx,w;
}E[N<<1];
struct stp{
int a,b,c;
stp(int _a=0,int _b=0,int _c=0):a(_a),b(_b),c(_c){}
};
struct EDGE{
int t,nx;
}e[N<<2];
vector<int> dist[N],rec[N];
queue<stp> Q;
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=