考虑只有最小瓶颈生成树上的边才能产生贡献,而最小生成树就是一棵最小瓶颈生成树。在Kruscal求最小生成树时在并查集中加入bitset维护颜色,记录每条边加入后的颜色数并维护前缀和。查询时在排序过的边权数组上二分,类似分块的方法查询。 注意起点也有颜色。我怎么觉得是题意表述不清,为什么自己家里还有妹子 const int maxn(5e5+10),maxc(600+10); int n,m,q,s,c[maxn],opt; using ll = long long; ll mod; struct Edge { int u,v,w; }e[maxn]; class UnionAndF...