[平面图欧拉定理]ONTAK2015. Ogród zoologiczny
来源:互联网 发布:spring mvc传对象数组 编辑:程序博客网 时间:2024/05/22 07:48
给定n个点m条边的平面图,q个询问,每次询问给出k个点,问这k个点的导出子平面图的域(不包括无穷域)的个数
n<=5e4,m<=2e5,q<=1e6,Σk<=5e6
平面图有一个性质
平面图欧拉定理:一个连通平面图满足
其中
那么如果平面图不连通
那么可以类似求拓扑序的方法,每次把当前图中度数最小的点拿出来,求出序列
这样就每次询问就最多只要枚举
#include <cstdio>#include <iostream>#include <algorithm>#include <queue>using namespace std;typedef pair<int,int> PAR;const int N=400010;int n,m,cnt,icnt,G[N],d[N],iG[N],vis[N];struct edge{ int t,nx;}E[N],iE[N];inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline void rea(int &x){ char c=nc(); x=0; for(;c>'9'||c<'0';c=nc());for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc());}inline void Insert(int x,int y){ E[++cnt].t=y; E[cnt].nx=G[x]; G[x]=cnt; d[x]++; E[++cnt].t=x; E[cnt].nx=G[y]; G[y]=cnt; d[y]++;}priority_queue<PAR> Q;inline void addedge(int x,int y){ iE[++icnt].t=y; iE[icnt].nx=iG[x]; iG[x]=icnt;}int q,it,iQ[N],fa[N],ivis[N],a[5000010];int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]);}int main(){ rea(n); rea(m); for(int i=1,x,y;i<=m;i++) rea(x),rea(y),Insert(x,y); for(int i=1;i<=n;i++) if(d[i]<=6) Q.push(PAR(-d[i],i)); while(!Q.empty()){ int x=Q.top().second,y=-Q.top().first; Q.pop(); if(d[x]!=y) continue; vis[x]=1; for(int i=G[x];i;i=E[i].nx) if(!vis[E[i].t]){ d[E[i].t]--; Q.push(PAR(-d[E[i].t],E[i].t)); addedge(x,E[i].t); } } rea(q); while(q--){ int V,E=0,L=0,x; rea(V); it++; for(int i=1;i<=V;i++) rea(a[i]),iQ[a[i]]=it,fa[a[i]]=a[i]; for(int k=1;k<=V;k++){ int x=a[k]; for(int i=iG[x];i;i=iE[i].nx) if(iQ[iE[i].t]==it){ fa[find(x)]=find(iE[i].t); E++; } } for(int i=1;i<=V;i++) if(ivis[find(a[i])]!=it) ivis[find(a[i])]=it,L++; printf("%d\n",E-V+L); } return 0;}
阅读全文
0 0
- [平面图欧拉定理]ONTAK2015. Ogród zoologiczny
- 平面图中的欧拉定理
- LA3263 平面图的欧拉公式
- 平面图欧拉公式的精彩证明
- 费马小定理&&欧拉定理
- 威尔逊定理,费马小定理,欧拉定理
- 欧拉定理
- 欧拉定理证明
- 欧拉定理
- 【数论】欧拉定理
- 欧拉定理
- 欧拉定理
- 欧拉定理
- 欧拉定理
- 欧拉定理
- 扩展欧拉定理
- 浅谈欧拉定理
- 扩展欧拉定理
- 剑指Offer------调整数组顺序使奇数位于偶数前面
- 计算器
- hexo+github搭建免费个人博客
- CentOS-5.11 更换默认软件源的方法
- HTML的基础知识
- [平面图欧拉定理]ONTAK2015. Ogród zoologiczny
- virtualbox虚拟机上安装centOS的网络配置
- 一次频繁Full GC的排查过程
- 后缀自动机 重复旋律 5(求所有本质不同的子串)
- Mysql中那些锁机制之InnoDB
- Elasticsearch5.6搭建及拼音中文混合搜索实现
- [spark] RDD解析
- SSM实战项目——Java高并发秒杀API
- python实现对其它主机的操作