博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 10765 Doves and bombs 割点
阅读量:6591 次
发布时间:2019-06-24

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

最近好懒,堆了好多题没写题解。。

原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1706

题意:

给你一个图,问你每个点去掉后有多少个联通块

题解:

就Tarjan一下就好,很简单

代码:

#include
#include
#include
#include
#include
#include
#include
#define MAX_N 11234using namespace std;int n,m;vector
G[MAX_N];int dfn[MAX_N],low[MAX_N],ind=0;bool vis[MAX_N];struct node{ public: int pos,val; void print(){ cout<
<<" "<
<
b.val;}node d[MAX_N];void Tarjan(int u,int p){ d[u].pos=u,d[u].val=1; dfn[u]=low[u]=++ind; vis[u]=1; int child=0; for(int i=0;i
=dfn[u]&&p!=0)d[u].val++; } else low[u]=min(dfn[v],low[u]); } if(p==0&&child>1)d[u].val=child;}void init(){ memset(vis,0,sizeof(vis)); memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low)); ind=0; for(int i=0;i<=n;i++)G[i].clear();}int main(){ cin.sync_with_stdio(false); while(true){ cin>>n>>m; if(n==0&&m==0)break; init(); while(true){ int u,v; cin>>u>>v; if(u==-1)break; u++;v++; G[u].push_back(v); G[v].push_back(u); } Tarjan(1,0); sort(d+1,d+1+n,cmp); for(int i=1;i<=m;i++) d[i].print(); cout<

 

转载于:https://www.cnblogs.com/HarryGuo2012/p/4889642.html

你可能感兴趣的文章
用Java axis2调用.net平台的Webservice出现的一些问题
查看>>
Struct2-使用随笔
查看>>
INSTALL_FAILED_OLDER_SDK
查看>>
自定义指令
查看>>
[Translation] [Quora]How exactly does a computer program work?
查看>>
c# delegate委托 和 event 时间 用法 快速体验
查看>>
windows git配置代理通过ssh协议访问github
查看>>
P2178 [NOI2015]品酒大会
查看>>
用CSS让未知高度内容垂直方向居中
查看>>
软件需求分析方法
查看>>
数组对象,字符串对象,Match对象
查看>>
Java 并发基础——线程安全性
查看>>
Auto Layout
查看>>
ZooKeeper伪分布式集群部署
查看>>
Golang学习笔记——variable
查看>>
【iOS】Masonry使用案例讲解
查看>>
HDU 4393 Throw nails
查看>>
C#线程系列讲座(5):同步技术之Monitor
查看>>
Java基础(Scanner、Random、流程控制语句)
查看>>
IOS移植到安卓
查看>>