博客
关于我
割点和图(割边)
阅读量:279 次
发布时间:2019-03-03

本文共 2394 字,大约阅读时间需要 7 分钟。

割点: 在连通的无向图中,删除一个点和与它所相连的边,无向图不再连通,说明这个点是割点。

思路: 从一个点开始深搜,当这个点不经过他的父亲节点不能返回到比这个父节点更早的时间戳,说明这个点的父节点是割点。
low[v]>=dfn[u]
注意: 判断割点时分两种情况,如果父节点是根节点的话,至少两个儿子才能形成割点!
割边就是去掉一条边使这个图不连通。
low[v]>dfn[u];不能经过u->v这条边,所以不能等于low[u] (可以用三角形举例)

/*POJ - 1144 求割点数目*/#include
#include
#include
using namespace std;vector
edge[110];int cnt;int dfn[110],low[110],root,flag[111];/*考虑图不连通?*/void Tarjan(int u,int fa){ int child=0; dfn[u]=low[u]=++cnt; for(int i=0; i
=dfn[u]&&u!=root)/*!!!大于等于*/ { flag[u]=1;/*儿子回到的最早时间戳大于等于x,x不是根节点*/ } else if(u==root&&child>=2) { /*根节点,至少两个儿子*/ flag[u]=1; } } else if(u!=v)/*!!! v点走过*/ { low[u]=min(low[u],dfn[v]); } } return ;}int main(){ int n; while(~scanf("%d",&n)&&n) { int m,t; char c; root=1; cnt=0; for(int i=0; i<=n; i++) { edge[i].clear(); dfn[i]=0; low[i]=0; flag[i]=0; } while(~scanf("%d",&m)&&m) { while(1) { scanf("%c",&c); if(c=='\n') break; scanf("%d",&t); edge[m].push_back(t); edge[t].push_back(m); // printf("%d <---> %d\n",t,m); } } Tarjan(1,1); int sum=0; for(int i=1; i<=n; i++) if(flag[i]) sum++; printf("%d\n",sum); } return 0;}
/*割边*/#include
using namespace std;#define N 1000int n,m,first[N],nex[N],w=1,dfn[N],low[N],flag[N],u[N],v[N],root,index;void Tarjan(int x,int father){ int child=0; index++;/*计算时间戳*/ dfn[x]=low[x]=index; for(int i=first[x];i!=-1;i=nex[i]) { int y=v[i];/* x->y */ if(!dfn[y])/*没有被访问过*/ { Tarjan(y,x); low[x]=min(low[x],low[y]); if(low[y]>dfn[x])/*这条边是不是割边*/ printf("%d %d\n",x,y); } else if(x!=father)/*不通过父节点访问*/ low[x]=min(low[y],dfn[x]);/*在割点中不一样low的值不对*/ } return;}int main(){ index=0; int y,x; scanf("%d%d",&n,&m); memset(flag,0,sizeof(flag)); memset(first,-1,sizeof(first)); for(int i=0;i

转载地址:http://smsl.baihongyu.com/

你可能感兴趣的文章
python学习12:水仙花
查看>>
4、Mysql 主从复制报错[ERROR] [MY-013117] 踩坑
查看>>
6、ShardingSphere 之 读写分离
查看>>
3 项目范围管理
查看>>
布隆过滤器
查看>>
C++ STL
查看>>
拓扑排序
查看>>
解方程
查看>>
中缀转后缀 逆波兰表达式求值
查看>>
浙江省赛2021
查看>>
练习赛 位运算 思维 思维
查看>>
Netty 粘包 拆包 | 史上最全解读
查看>>
ByteBuf(秒懂)- 图解Netty系列
查看>>
protobuf + maven 爬坑记
查看>>
考了400分?不好意思,可能连这些“变态”学校的复试线都没够着!
查看>>
【调剂】其它计算机/软件调剂信息 20.5.20
查看>>
【调剂】211北京邮电大学2020年计算机学院硕士研究生招生缺额信息
查看>>
【招生目录和招生简章】浙江大学 华北电力大学 河南工业大学 福建师范大学...
查看>>
明天查分!英语四六级不过,对考研有影响么?
查看>>
【招生目录和招生简章】中南大学 国防科学技术大学 山东财经大学 新疆财经大学 山东中医药大学...
查看>>