把割点删去后,剩下的联通块个数就是答案,方案数就是siz乘一起,但要讨论一些特殊情况,没有割点时答案直接算,一个联通块如果连接多个割点是不需算入答案的;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=;
struct edg{
int nxt,u,v;
}e[maxn<<];
int dfn[maxn],low[maxn],ind,is[maxn];
int last[maxn],t,cas,n,m,vis[maxn],cc,tim;
ll ans=,sum,cnt,tmp,w[maxn];
void add(int x,int y){
n=max(n,max(x,y));
++t;e[t].nxt=last[x];last[x]=t;e[t].v=y;
}
void dfs(int x,int fa){
low[x]=dfn[x]=++ind;
int child=;
for(int i=last[x];i;i=e[i].nxt){
int v=e[i].v;
if(v==fa)continue;
if(!dfn[v]){
child++;
dfs(v,x);
low[x]=min(low[x],low[v]);
if(fa&&low[v]>=dfn[x]){is[x]=;++cc;}
if(child>&&!fa){is[x]=;++cc;}
}
else low[x]=min(low[x],dfn[v]);
}
}
int solve(int x){
vis[x]=;
int siz=;
for(int i=last[x];i;i=e[i].nxt){
int v=e[i].v;
if(!vis[v]){
if(is[v]){
if(w[v]!=tim){cnt++;w[v]=tim;}
}
else siz+=solve(v);
}
}
return siz;
}
int main(){
while(scanf("%d",&m)!=EOF&&m){
printf("Case %d: ",++cas);
memset(last,,sizeof(last));
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
memset(vis,,sizeof(vis));
memset(is,,sizeof(is));
cc=tim=sum=n=t=ind=;ans=;
int x,y;
for(int i=;i<=m;++i){
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
}
for(int i=;i<=n;++i){
if(!dfn[i])dfs(i,);
}
if(!cc){printf("2 %d\n",n*(n-)/);continue;}
for(int i=;i<=n;++i)
if((!vis[i])&&(!is[i])){
++tim;
cnt=;
int tmp=solve(i);
//cout<<cnt<<' '<<tmp<<endl;
if(cnt<=){
sum++;
ans*=tmp;
}
}
printf("%lld %lld\n",sum,ans);
}
return ;
}

bzoj2730(割点+分类讨论)的更多相关文章

  1. Codeforces 460D Little Victor and Set --分类讨论+构造

    题意:从区间[L,R]中选取不多于k个数,使这些数异或和尽量小,输出最小异或和以及选取的那些数. 解法:分类讨论. 设选取k个数. 1. k=4的时候如果区间长度>=4且L是偶数,那么可以构造四 ...

  2. BZOJ-1067 降雨量 线段树+分类讨论

    这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...

  3. UVaLive 6862 Triples (数学+分类讨论)

    题意:给定一个n和m,问你x^j + y^j = z^j 的数量有多少个,其中0 <= x <= y <= z <= m, j = 2, 3, 4, ... n. 析:是一个数 ...

  4. 枚举(分类讨论):BZOJ 1177: [Apio2009]Oil

    1177: [Apio2009]Oil Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1477  Solved: 589[Submit] Descri ...

  5. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array 分类讨论连续递推dp

    题意:给出一个 数列 和一个x 可以对数列一个连续的部分 每个数乘以x  问该序列可以达到的最大连续序列和是多少 思路: 不是所有区间题目都是线段树!!!!!! 这题其实是一个很简单的dp 使用的是分 ...

  6. 【cf789B】Masha and geometric depression(分类讨论/暴力)

    B. Masha and geometric depression 题意 在黑板上写数列,首项是b,公比是q,超过l时就停止不写.给定m个数,遇到后跳过不写.问一共写多少个数,如果无穷个输出inf. ...

  7. P2331 [SCOI2005]最大子矩阵 (动规:分类讨论状态)

    题目链接:传送门 题目: 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k( ...

  8. UVa 11722 Joining with Friend (几何概率 + 分类讨论)

    题意:某两个人 A,B 要在一个地点见面,然后 A 到地点的时间区间是 [t1, t2],B 到地点的时间区间是 [s1, s2],他们出现的在这两个区间的每个时刻概率是相同的,并且他们约定一个到了地 ...

  9. Bzoj4558:分类讨论 计算几何 组合数学

    国际惯例的题面: 这题让我爆肝啦......这种计数显然容斥,正好不含任何坏点的我们不会算,但是我们能算至少含零个坏点的,至少含一个坏点的,至少含两个坏点的......所以最终的答案就是(至少含零个坏 ...

随机推荐

  1. Educational Codeforces Round 30 D. Merge Sort

    题意:给你n和k,n代表有多少个数,k代表几次操作,求一个1到n的序列,要k次mergesort操作才能还原 Examples Input 3 3 Output 2 1 3 Input 4 1 Out ...

  2. hibernate写list到mysql

    用jpa写下面语句执行报错,估计要先手动转成字符串吧,工作忙没继续下去了. public void persist(Goods goods) { Assert.notNull(goods);// go ...

  3. Java8 之stream

    总概述:Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操 ...

  4. win7安装oracle 10g问题总结。

    1.安装oracle10g的时候,出现此问题,如图:  右键安装程序(setup.exe) -> 属性 -> 兼容性 -> 以兼容模式运行这个程序 windows xp( servi ...

  5. 网站改版应对google

    客户要求修改网站,这会给我们带来问题!为了保留他的网站权重和关键字排名,我们必须在做网站修改工作之前分析他原来网站的连接结构和标题,这样我才能更好地保证他原来网站的整体权重不会有大的变化!以下是我们根 ...

  6. docker面试题集

    Docker的应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发布. 在服务型环境中部署和调整数据库或其他的后台应用. 从头编译或者扩展现有的OpenShift或Cloud Foun ...

  7. Python学习笔记1环境搭建

    1.在浏览器输入https://www.python.org/psf/,点击download下载python3.7.2(https://www.python.org/)   https://www.p ...

  8. redis缓存与数据库一致性问题

    一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去. ...

  9. 分支&循环

    分支 单分支 if 条件: 满足条件后要执行的代码 双分支 if 条件: 满足条件执行代码 else: if条件不满足就走这段 多分支: if 条件: 满足条件执行代码 elif 条件: 上面的条件不 ...

  10. rn最新版测试

    1.使用软件版本rn-4.20.4.zipdrago-4.22.03 2.启动drago选择菜单‘对弈’ -> ‘对弈引擎设置’,点按钮‘添加’,选择‘已安装’,输入:姓名‘rn-4.20.4’ ...