https://vjudge.net/problem/UVA-10765

题意:

给一个n个点的无向图,求每个点删去后形成的连通分量数。

思路:

判断割点,如果是割点的话,在dfs的时候计算出删去它后所形成的连通分量数。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
using namespace std; const int maxn=1e4+; struct node
{
int id;
int ge;
}d[maxn]; int n,m;
int pre[maxn],cut[maxn],low[maxn];
int degree[maxn];
int dfs_block;
vector<int> G[maxn]; int dfs(int u,int fa)
{
int lowu=pre[u]=++dfs_block;
int child=;
for(int i=;i<G[u].size();i++)
{
int v=G[u][i];
if(!pre[v])
{
child++;
int lowv=dfs(v,u);
lowu=min(lowu,lowv);
if(lowv>=pre[u])
{
cut[u]++;
}
}
else if(pre[v]<pre[u] && v!=fa)
lowu=min(lowu,pre[v]);
}
if(fa < && child==) cut[u]=;
low[u]=lowu;
return lowu;
} bool cmp(node a,node b)
{
return a.ge>b.ge||(a.ge==b.ge&&a.id<b.id);
} int main()
{
//freopen("D:\\input.txt","r",stdin);
while(~scanf("%d%d",&n,&m)&& n && m)
{
for(int i=;i<n;i++) {G[i].clear();cut[i]=;}
int u,v;
while(true)
{
scanf("%d%d",&u,&v);
if(u==- && v==-) break;
G[u].push_back(v);
G[v].push_back(u);
}
memset(pre,,sizeof(pre));
memset(low,,sizeof(low));
dfs(,-);
for(int i=;i<n;i++)
{
d[i].id=i;
d[i].ge=cut[i];
}
sort(d,d+n,cmp);
for(int i=;i<m;i++)
printf("%d %d\n",d[i].id,d[i].ge);
printf("\n");
}
return ;
}

最新文章

  1. PHP中include引用导致不能再次相对引用文件的一个小问题
  2. linux查看父子进程
  3. 踩到一个Emit的坑,留个纪念
  4. jquery消息提示框
  5. C#全屏随机位置显示图片的小程序
  6. HDU 5638 Toposort 线段树+贪心
  7. Static Classes and Static Class Members
  8. (原)vs2013编译boost1.60库
  9. 关于echarts
  10. web移动端开发技巧
  11. 记录 制作校园网登陆脚本 python编写 附源码
  12. 虚拟机设置固定ip可以使shell远程连接到服务器
  13. PyCharm中 Django1.11配置Mysql数据库
  14. Ubuntu 安装 hadoop
  15. AtCoder Regular Contest 066 F Contest with Drinks Hard
  16. poj 2485 求最小生成树中 最长的一条边
  17. IMAP协议命令(详细)
  18. mysql优化概述4
  19. 池建强 博客 Mac使用技巧 第一季
  20. 【转】如何使用BehaviorSDK

热门文章

  1. php中var_dump、var_export和print_r的用法区别
  2. element自定义表单验证
  3. Google发布机器学习术语表 (包括简体中文)
  4. LeetCode_Search in Rotated Sorted Array
  5. 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活--hdu2191(多重背包模板)
  6. HDFS租约机制
  7. OpenCV膨胀与腐蚀
  8. TensorFlow学习笔记(三)MNIST数字识别问题
  9. 打开关闭oracle自动表分析
  10. Does Daemon Thread Exit with Main Thread?