【CF891C】Envy [最小生成树]

CF891C Envy

CF891C luogu

==是看的yyb的

  1. 对于任意权值的边,所有最小生成树中这个权值的边的数量是一定的
  2. 对于任意正确加边方案,加完小于某权值的所有边后图的连通性是一样的

将所有权值相同的边一起考虑 由2可得它们连出来的结果是固定的

将连边改为脸连通块

预处理时将每个小于\(w_i\)的边先加入 再加入边权为\(w_i\)的边 若形成环 则这组询问失败

在每次寻问候要将这次询问所构成的修改还原==

#include
using namespace std;
#define ll long long
typedef pairpii;
const int N=5e5+5,M=5e5+5,inf=0x3f3f3f3f;
int n,m,s,tt,f[N];
templatevoid rd(t &x){
    x=0;int w=0;char ch=0;
    while(!isdigit(ch)) w|=ch=='-',ch=getchar();
    while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    x=w?-x:x;
}

struct edge{
    int u,v,w,id;
    bool operator<(const edge&X)const{return w

你可能感兴趣的:(【CF891C】Envy [最小生成树])