Code: #include<bits/stdc++.h> #define ll long long #define maxn 300001 #define inf 1000000000 #define setIO(s) freopen(s".in","r",stdin) using namespace std; deque<int>Q; int n,S,edges,k; int hd[maxn],to[maxn<<1],nex[
两次bfs可得直径,答案一定不会小于所有点到直径的距离最大值,只要把直径上的边权设为0,任选直径上一点bfs可得将最大值作为二分下界,二分直径左右端点的舍弃部分 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using na