BZOJ 3569 DZY Loves Chinese(BZOJ 3563) II 线性基

来源:互联网 发布:windows清理助手64 编辑:程序博客网 时间:2024/06/05 03:01

题目大意:给出一张n个点m条边的无向图。进行q次询问,问删掉某k条边后图是否联通。强制在线
N≤100000 M≤500000 Q≤50000 1≤K≤15

这题好神啊…

首先找出图中的一棵生成树,对于每一条非树边赋上一个随机值,每条树边等于覆盖它的非树边的权值的异或和,那么这个图不连通当存在一个删掉的边的子集的异或和为0。

线性基搞一下看能不能异或出0。

#include <cstdio>#include <algorithm>#include <cstring>#define N 100005using namespace std;int RAND() { return (rand()<<16)+rand(); }struct Edge {    int to,nxt;    Edge() {}    Edge(int _to,int _nxt):to(_to),nxt(_nxt) {}}e[N*10];int n,m,T,tot=1,top,ans,s[20],fir[N],val[N*5],p[N];bool vis[N];void Add_Edge(int u,int v) {    e[++tot]=Edge(v,fir[u]), fir[u]=tot;    e[++tot]=Edge(u,fir[v]), fir[v]=tot;    return ;}void dfs1(int x,int from) {    vis[x]=true;    for(int i=fir[x];~i;i=e[i].nxt) {        if(e[i].to==from) continue;        if(!vis[e[i].to]) dfs1(e[i].to,x);        else if(!val[i/2]) {            int rd=RAND();            val[i/2]=rd;            p[x]^=rd;            p[e[i].to]^=rd;        }    }    return ;}void dfs2(int x,int from) {    vis[x]=true;    for(int i=fir[x];~i;i=e[i].nxt) {        if(vis[e[i].to]) continue;        dfs2(e[i].to,x);        val[i/2]=p[e[i].to];        p[x]^=p[e[i].to];    }    return ;}void Gauss() {    int j=0;    for(int k=30;~k;--k) {        int i;        for(i=j+1;i<=top;++i)            if(s[i]&(1<<k))                break;        if(i==top+1) continue;        swap(s[i],s[++j]);        for(int i=1;i<=top;++i)            if(s[i]&(1<<k) && i!=j)                s[i]^=s[j];    }    return ;}int main() {    memset(fir,-1,sizeof fir);    scanf("%d%d",&n,&m);    for(int i=1,x,y;i<=m;++i) scanf("%d%d",&x,&y), Add_Edge(x,y);    dfs1(1,0);    memset(vis,false,sizeof vis);    dfs2(1,0);    for(scanf("%d",&T);T;--T) {        scanf("%d",&top);        for(int i=1;i<=top;++i) scanf("%d",s+i), s[i]=val[s[i]^ans];        Gauss();        if(s[top]) ++ans;        puts(s[top] ? "Connected" : "Disconnected");    }    return 0;}
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 附近幼儿园拖班招满了怎么办 6个月大宝宝拉肚子怎么办 婴儿容易吐奶怎么办 新生儿睡眠时间颠倒怎么办 婴儿睡觉黑白颠倒怎么办 婴儿黑白颠倒了怎么办 宝宝肠粘膜受损怎么办 dnf会卡换装怎么办? 孩子不讲理蛮横怎么办 孩子不爱上学了怎么办 幼儿园孩子不爱上学怎么办 额头撞肿了怎么办 两岁半宝宝说话晚怎么办 1岁宝宝拉肚子怎么办? 小孩嗓子老哑怎么办 小孩嗓子经常哑怎么办 小孩子一年级成绩差怎么办 小孩子一年级学习成绩差怎么办 楼上有孩子扰民怎么办 隔壁小孩太吵怎么办 楼上孩子太吵怎么办 泰国贴纸签小孩怎么办 六个月宝宝近视怎么办 孩子视力低应该怎么办 儿童视力低常怎么办 视力储备值低怎么办 六个月宝宝远视怎么办 婴儿喜欢舔衣服怎么办 一岁半宝宝抵抗力差怎么办 两个月宝宝打嗝怎么办 衣服买大一码怎么办 8岁儿童头汗多怎么办 新生儿肛门红了怎么办 40天新生儿发烧怎么办 十天婴儿发烧怎么办 宝宝发烧37.3度怎么办 小孩发烧37.2度怎么办 宝宝37.5不退热怎么办 三个半月宝宝发烧怎么办 婴儿发烧37.4度怎么办 小孩发烧37.4度怎么办