hdu-3671-tarjin/割点方案
http://acm.hdu.edu.cn/showproblem.php?pid=3671
给出一幅无向图,询问有多少种移除点对的方案使得剩下的连通分量个数大于1.
和上一题差不多的思路直接做n次tarjin即可。
- #include<iostream>
- #include<cstdio>
- #include<vector>
- #include<cstring>
- using namespace std;
- #define LL long long
- #define pb push_back
- const int maxn=;
- vector<int>g[maxn];
- int dfn[maxn],low[maxn],sub[maxn],root,sum,ban;
- bool vis[maxn];
- void dfs(int u){
- dfn[u]=low[u]=sum++;
- vis[u]=;
- int son=;
- for(int i=;i<g[u].size();++i){
- int v=g[u][i];
- if(v==ban) continue;
- if(vis[v]){
- low[u]=min(low[u],dfn[v]);
- }
- else{
- dfs(v);
- if(u==root)son++;
- else{
- if(low[v]>=dfn[u])sub[u]++;
- }
- low[u]=min(low[u],low[v]);
- }
- }
- if(u==root)sub[u]=son;
- else sub[u]++;
- }
- int main(){
- int n,m,cas=,i,j,u,v;
- while(scanf("%d%d",&n,&m)==){
- if(n==&&m==)break;
- for(i=;i<=n;++i)g[i].clear();
- while(m--){
- scanf("%d%d",&u,&v);
- g[u].pb(v);
- g[v].pb(u);
- }
- int ans=;
- for(i=;i<=n;++i){
- int p=;
- ban=i,sum=;
- memset(vis,,sizeof(vis));
- memset(sub,,sizeof(sub));
- for(j=;j<=n;++j){
- if(j==ban || vis[j]) continue;
- root=j;
- p++;
- dfs(j);
- }
- //cout<<"p="<<p<<endl;
- for(j=i+;j<=n;++j){
- if(sub[j]+p->=)ans++;
- }
- }
- printf("Case %d: %d\n",++cas,ans);
- }
- return ;
- }
hdu-3671-tarjin/割点方案的更多相关文章
- HDU - 3671 Boonie and Clyde (图的割点)
As two icons of the Great Depression, Bonnie and Clyde represent the ultimate criminal couple. Stori ...
- POJ 2117 (割点+连通分量)
题目链接: http://poj.org/problem?id=2117 题目大意:在一个非连通图中,求一个切除图中任意一个割点方案,使得图中连通分量数最大. 解题思路: 一个大陷阱,m可以等于0,这 ...
- Tarjan总结(缩点+割点(边)+双联通+LCA+相关模板)
Tarjan求强连通分量 先来一波定义 强连通:有向图中A点可以到达B点,B点可以到达A点,则称为强连通 强连通分量:有向图的一个子图中,任意两个点可以相互到达,则称当前子图为图的强连通分量 强连通图 ...
- tarjin求割点
题目: hdu3671 http://acm.hdu.edu.cn/showproblem.php?pid=3671 题意:给一个无向图,要求毁掉两个点,使图变得不连通,图一开始是连通的 因为要毁掉两 ...
- HDU 1026 (BFS搜索+优先队列+记录方案)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 题目大意:最短时间内出迷宫.迷宫里要杀怪,每个怪有一定HP,也就是说要耗一定时.输出方案. 解 ...
- HDU 4587 TWO NODES 割点
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意: 删除两个点,使连通块的数目最大化 题解: 枚举删除第一个点,然后对删除了第一个点的图跑 ...
- hdu 5739 割点
Fantasia Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- hdu 2126 Buy the souvenirs 二维01背包方案总数
Buy the souvenirs Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU 2126 01背包(求方案数)
Buy the souvenirs Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- shiro中authc和user的权限区别
前者(authc)是认证过,后者(user)是登录过,如果开启了rememberMe功能的话,后者(user)也是可以通过的,而前者(authc)通过不了.故我们用authc来校验一些关键操作,比如购 ...
- vs添加webservice
VS2010中添加WebService注意的几个地方 添加web引用和添加服务引用有什么区别? 2.4.1 基础知识——添加服务引用与Web引用的区别 C#之VS2010开发Web Service V ...
- org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'alarmGroup' from result set. Cause: java.sql.SQLException: Error
异常展示: org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'alarmGroup ...
- python requests post和get
import requests import time import hashlib import os import json from contextlib import closing impo ...
- JS实现 进度条 不用控件
demo1 <html> <head> <title>进度条</title> <style type="text/css"&g ...
- python中while循环运算符及格式化输出
一,while循环 while 条件: while语句块(循环体) 运行: 判断你给的条件是否为真,如果真则执行循环体.否则跳出循环. 执行完循环体之后再次判断条件是否为真 例子1 我们玩联盟的时候喷 ...
- config配置
<?php /** * User: Eden * Date: 2019/3/30 * 共有内容 */ /** CREATE TABLE `tf_configs` ( `id` int(11) N ...
- 【转】Qt鼠标键盘事件
http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...
- python调用虹软2.0
第一版踩了无数的坑,终于第二版把坑全添了,这次更新可以正常获取人脸数,角度,代码可读性更高,继续更新中 第三版已发出 https://www.cnblogs.com/wxt51/p/10125460. ...
- 认识flask框架-2
1.json:基于键值对的字符串,轻量级的数据交互格式,用来传输数据 2.json模块 dumps:把字典转化成json字符串. loads:把json字符串转成字典. dump.load操作的是文件 ...