Network UVA - 315 无向图找割点
题意:
给你一个无向图,你需要找出来其中有几个割点
割点/割项:
1、u不为搜索起点,low[v]>=dfn[u]
2、u为搜索起点,size[ch]>=2
3、一般情况下,不建议在tarjan中直接输出答案(可能会有重复)
4、在有重边的情况下,将tarjan传值中的father改为其编号,由于存边的连续性
只要判断 (当前编号)i != (father编号)pre^1
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<queue>
6 using namespace std;
7 const int maxn=105;
8 int cnt,head[maxn],n,dfn[maxn],low[maxn],num,qua,root,iscut[maxn];
9 struct edge
10 {
11 int u,v,next;
12 }e[maxn*maxn];
13 void add_edge(int x,int y)
14 {
15 e[cnt].u=x;
16 e[cnt].v=y;
17 e[cnt].next=head[x];
18 head[x]=cnt++;
19 }
20 void tarjan(int x)
21 {
22 dfn[x]=low[x]=++num;
23 int flag=0;
24 for(int i=head[x];i!=-1;i=e[i].next)
25 {
26 int to=e[i].v;
27 if(!dfn[to])
28 {
29 tarjan(to);
30 low[x]=min(low[x],low[to]);
31 if(low[to]>=dfn[x])
32 {
33 flag++;
34 if(x!=root || flag>1) iscut[x]=1,qua++;
35 } //一个割点可能会多次经历iscut[x]=1,所以qua里面的值不是割点数目
36 }
37 else low[x]=min(dfn[to],low[x]);
38 }
39 }
40 int main()
41 {
42 while(~scanf("%d",&n) && n)
43 {
44 cnt=num=qua=0;
45 memset(iscut,0,sizeof(iscut));
46 memset(head,-1,sizeof(head));
47 memset(dfn,0,sizeof(dfn));
48 memset(low,0,sizeof(low));
49 int x,y;
50 char ch;
51 while(~scanf("%d",&x) && x)
52 {
53 while(~scanf("%d",&y))
54 {
55 scanf("%c",&ch);
56 add_edge(x,y);
57 add_edge(y,x);
58 if(ch=='\n'){
59 break;
60 }
61 }
62 }
63 // for(int i=0;i<cnt;++i)
64 // {
65 // printf("%d %d\n",e[i].u,e[i].v);
66 //
67 // }
68 for(int i=1;i<=n;++i)
69 {
70 if(!dfn[i])
71 {
72 //printf("**\n");
73 root=i;
74 tarjan(i);
75 }
76 }
77 int ans=0;
78 for(int i=1;i<=n;++i)
79 if(iscut[i]) ++ans;
80 printf("%d\n",ans);
81 }
82 return 0;
83 }
Network UVA - 315 无向图找割点的更多相关文章
- B - Network - uva 315(求割点)
题意:给一个无向连通图,求出割点的数量. 首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第一个数字代表后面的都和它存在边,0表示行输入的结束(很蛋疼的输入方式). 分析:割点的模板题 ...
- Network UVA - 315(求割点)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- Network POJ - 3694 无向图找桥
题意: 给你一个无向图,你需要找出来其中有几个桥 桥: 1.存在重边必定不为桥 2.low[v]>dfn[u] 代码: //题意很清晰 //就是这个需要先找出来原无向图中的桥个数,然后在判断添加 ...
- kuangbin专题 专题九 连通图 Network UVA - 315
题目链接:https://vjudge.net/problem/UVA-315 题目:求割点. #include <iostream> #include <cstdio> #i ...
- [kuangbin带你飞]专题九 连通图B - Network UVA - 315
判断割点的性质: 如果点y满足 low[y]>=dfn[x] 且不是根节点 或者是根节点,满足上述式子的有两个及其以上. 就是割点 如果是起点,那么至少需要两个子节点满足上述条件,因为它是根节点 ...
- UVA 315 Network (模板题)(无向图求割点)
<题目链接> 题目大意: 给出一个无向图,求出其中的割点数量. 解题分析: 无向图求割点模板题. 一个顶点u是割点,当且仅当满足 (1) u为树根,且u有多于一个子树. (2) u不为树根 ...
- UVA 315 315 - Network(求割点个数)
Network A Telephone Line Company (TLC) is establishing a new telephone cable network. They are con ...
- DFS应用——找出无向图的割点
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "DFS应用于找割点" 的idea 并用源代码加以实现: 0.2) 必须要事先 做个s ...
- POJ 1144 Network —— (找割点)
这是一题找无向图的割点的模板题,割点的概念什么的就不再赘述了.这里讲一下这个模板的一个注意点. dfs中有一个child,它不等于G[u].size()!理由如下: 如上图,1的size是2,但是它的 ...
随机推荐
- 最全的HashMap源码解析!
HashMap源码解析 HashMap采用键值对形式的存储结构,每个key对应唯一的value,查询和修改的速度很快,能到到O(1)的平均复杂度.他是非线程安全的,且不能保证元素的存储顺序. 他的关系 ...
- 洛谷P1972 [SDOI2009]HH的项链(树状数组)
题目链接: https://www.luogu.org/problemnew/show/P1972 题目描述: HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后 ...
- missing tables and indexes的处理办法
最近做了SAP系统的异构迁移,顺便把oracle DB也升级了,从10g升级到11g,但是升级后,在DB02或者是ora_space中的diagnostics->Missing Tables a ...
- SYSTEM_SHMCONSTR_LOGON_FAILED错误解决办法
如果你在调用WebDynpro程序时,发现st22里有如上图所示的报错信息,可以参考note:1318269所列举的方法来进行处理.大概的方法就是,通过SE80,执行任意的webdypro程序,例如& ...
- pycharm工具的使用
一.Pycharm常用快捷键 快捷键 作用 备注 ctrl + win + 空格 自动提示并导包 连按两次 ctrl + alt + 空格 自动提示并导包 连按两次 Alt + Ente ...
- uni-app开发经验分享七: 有关列表数据下拉加载方法的解析及记录
在使用uni.request获取后台数据时,我们往往碰到一个问题,列表的懒加载及数据实时更新,这里记录下我制作这类功能的方法. 问题描述:后台返回数据,前端需要进行10个为一组来分页,先显示前10个, ...
- LR 场景中Windows资源配置设置
监视连接前的准备工作 1)进入被监视windows系统,开启以下几个服务Remote Procedure Call(RPC) .Rmote Resgistry.Network DDE.Server.W ...
- 让绝对定位的div居中
最近看到一个问题就是让绝对定位的div居中,在尝试了top:50%:left:50%:后发现,居中是有问题的并不是想象中的样子 需要再加两句margin-top:-盒子高度的一般px margin- ...
- 向同一个模型的外键反向关联名称产生了冲突 Django迁移
向同一个模型的外键反向关联名称产生了冲突 一个模型中有两个外键指向同一张表时,创建迁移模型时报错:" HINT: Add or change a related_name argument ...
- MySQL 高性能优化规范建议
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名 ...