2020牛客多校第五场 B-graph

CodeForces 888G Xor-MST

CF888G的题解

题目变式:预处理一下就当888G做

 

#include 
  
using namespace std;
  
#define ll long long
ll input(){
    ll x=0,f=0;char ch=getchar();
    while(ch<'0'||ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
    return f? -x:x;
}
  
const int N=2e5+10;
const int inf=0x3f3f3f3f;
#define ls ch[now][0]
#define rs ch[now][1]
int L[N*40],R[N*40],ch[N*40][2],tot;
int n,a[N],root;
void Insert(int &now,int x,int dep){
    if(!now) now=++tot;
    L[now]=min(L[now],x),R[now]=max(R[now],x);
    if(dep<0) return;
    int bit=a[x]>>dep&1;
    Insert(ch[now][bit],x,dep-1);
}
int query(int now,int val,int dep){
    if(dep<0) return 0;
    int bit=val>>dep&1;
    if(ch[now][bit]) return query(ch[now][bit],val,dep-1);
    else return query(ch[now][bit^1],val,dep-1)+(1< G[N];
  
void ddfs(ll u,ll fa){
    for(auto v:G[u]){
        if(v.v==fa) continue;
        a[v.v]=a[u]^v.w;
        ddfs(v.v,u);
    }
}
  
int main(){
    ll n=input();
  
    for(ll i=1;i

 

 

你可能感兴趣的:(基础算法)