话说我当时一开始想的是dijkstra 先求出每个点到x的最长的边的长度,然后存入一个数组,离散化,最后每次二分查询就可以了 code #include<bits/stdc++.h> using namespace std; #define ll long long #define N 500050 ll n,m,opt,x,dis[N],pre,vis[N],head[N],len,cnt,a[N],sum1[N],tot[N],qq,sum2[N],mod; int us[N]; struct node{ int c,id; }nod[N]; struct edge{ ...