codeforces 1213G Path Queries

https://codeforces.com/problemset/problem/1213/G

把询问离线,对于每个询问,我们把比他的要求小的边全部加进树中。

那么答案就是所有连通块的贡献,每个连通块的贡献是sz*(sz-1)/2

那么我们按询问的要求值从小到大排序,然后每次尝试加边,并用并查集维护连通块大小

#include
#define maxl 400010
using namespace std;

int n,m;
int a[maxl],ehead[maxl],f[maxl],t[maxl];
long long ans[maxl];
struct ed
{
	int u,v,w;
}e[maxl];
struct que
{
	int val,id;
}q[maxl];
char s[maxl];

inline bool cmp(const ed &x,const ed &y)
{
	return x.w

 

你可能感兴趣的:(离线,并查集)