bzoj 2730: [HNOI2012]矿场搭建
2016-03-22 06:27
465 查看
#include<cstdio> #include<cstring> #include<iostream> #define M 508 using namespace std; int T=1,m,n,head[M],K,next[10*M],u[10*M],cnt,f[M],c[M],fa[M],dfn[M],low[M],time1,ans,bi[M],sum[M]; long long ans1=1; void jia(int a1,int a2) { cnt++; next[cnt]=head[a1]; head[a1]=cnt; u[cnt]=a2; } void tarjin(int a1,int deep) { time1++; dfn[a1]=low[a1]=time1; c[a1]=-1; int tot=0; for(int i=head[a1];i;i=next[i]) if(u[i]!=fa[a1]) { fa[u[i]]=a1; if(!c[u[i]]) { tarjin(u[i],deep+1); low[a1]=min(low[a1],low[u[i]]); tot++; if(deep==1&&tot>1) f[a1]=1; if(deep>1&&low[u[i]]>=dfn[a1]) f[a1]=1; } else if(c[u[i]]==-1&&u[i]!=fa[a1]) low[a1]=min(low[a1],dfn[u[i]]); } c[a1]=1; } void dfs(int a1) { c[a1]=1; if(!bi[a1]) bi[a1]=time1; else bi[a1]=-1; for(int i=head[a1];i;i=next[i]) if(!c[u[i]]&&!f[u[i]]) dfs(u[i]); return; } int main() { for(;scanf("%d",&m),m;T++){ ans=cnt=n=0; ans1=1; memset(head,0,sizeof(head)); memset(bi,0,sizeof(bi)); memset(f,0,sizeof(f)); memset(sum,0,sizeof(sum)); for(int i=1;i<=m;i++) { int a1,a2; scanf("%d%d",&a1,&a2); n=max(n,a1); n=max(n,a2); jia(a1,a2); jia(a2,a1); } time1=0; for(int i=1;i<=n;i++) { f[i]=0; c[i]=0; fa[i]=0; } tarjin(1,1); time1=0; for(int i=1;i<=n;i++) if(f[i]) { memset(c,0,sizeof(c)); for(int j=head[i];j;j=next[j]) if(!c[u[j]]&&!f[u[j]]) { time1++; dfs(u[j]); } } for(int i=1;i<=n;i++) if(bi[i]!=-1) sum[bi[i]]++; for(int i=1;i<=time1;i++) if(sum[i]) { ans++; ans1*=sum[i]; } printf("Case %d: ",T); if(ans) printf("%d %lld\n",ans,ans1); else printf("2 %d\n",n*(n-1)/2);} return 0; }
先用tarjin找割点 割点条件u1是树根,且有大于1棵子树,u1不是树根,low[u[i]]>dfn[u1],把和一个割点相连的联通块建出口。
相关文章推荐
- Genymotion无法启动模拟器解决方案(续)报错:“unbale to start the virtual device”
- Redis 基础
- Create 2D game with Unity 3D - ( 1 )
- 概率
- bzoj 2705: [SDOI2012]Longge的问题
- bzoj 2661: [BeiJing wc2012]连连看
- bzoj 2654: tree
- oracle11g 云迁移报错 ORA-01180: can not create datafile 1
- STM32 IAP 在线升级
- 再次推荐一款逼真的HTML5下雪效果
- [R] ADMM for lasso
- 我与小娜(40):中国人工智能学会访问记
- WM_NCHITTEST有21种取值,常用的有HTCAPTION,HTCLIENT,HTBORDER,HTSYSMENU,HTTRANSPARENT,罗列所有VCL里对其使用的情况
- CABAC
- Win10 安装SDK解决方法
- 转一个ndk1.5.1当前最新版ndk配置方法,还未实验
- 24. Swap Nodes in Pairs
- 【LeetCode】108. Convert Sorted Array to Binary Search Tree
- TControl.Perform是有返回值的,且看VCL框架如何利用消息的返回值(全部例子都在这里)
- CentOS6.5把MySQL从5.1升级到5.6后,MySQL不能启动