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

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

题意:

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

题解:

就Tarjan一下就好,很简单

代码:

#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
#include<cstdio>
#include<string>
#include<algorithm>
#define MAX_N 11234
using namespace std;int n,m;
vector<int> 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<<pos-1<<" "<<val<<endl;}
};bool cmp(node a,node b){if(a.val==b.val)return a.pos<b.pos;return a.val>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<G[u].size();i++){int v=G[u][i];if(v==p)continue;if(!vis[v]){child++;Tarjan(v,u);low[u]=min(low[v],low[u]);if(low[v]>=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<<endl;}return 0;
}

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

UVA 10765 Doves and bombs 割点相关推荐

  1. UVA,10765 Doves and bombs

    题意:给你n个点,然后你要算出删除每个点后有多少个联通块,然后输出前m个,顺序是优先输出形成联通块多的,假如有数量相同,优先输出先输入的. 思路:参考了一下别人的思路,用tarjan时就可以求出联通块 ...

  2. Doves and bombs UVA - 10765

    求割掉一个点后的连通分量个数最多的m个点 It is the year 95 ACM (After the Crash of Microsoft). After many years of peace ...

  3. uva 315 (poj 1144 求割点)

    题意:给你一张无向图,求割点的个数. 思路:输入稍微处理一下接着直接套模版. 1 #include <iostream> 2 #include <cstdio> 3 #incl ...

  4. UVA - 315 Network(tarjan求割点)

    题目链接:点击查看 题目大意:给出一个由n台电脑互相连接而成的网络系统,其中有一些电脑如果一旦损坏,则会造成整个网络出现缺口,导致某些地方无法互相连通,我们称这种电脑为关键点,题目需要求出有多少个关键 ...

  5. UVA10765 Doves and bombs(双连通分量)

    Problem 每个点的权为删除这个点后图中连通块的个数,求权值前m大的点. Solution 求点-双连通分量,一个点的权值为总连通块数+该点出现在不同点连通分量的次数-1. 该点出现在不同点连通分 ...

  6. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  7. 图论算法与模型(训练指南题库)

    一.基础题目 1.UVA 11624 Fire!迷宫问题 多源BFS 题意: 帮助joe走出一个大火蔓延的迷宫,其中joe每分钟可往上下左右四个方向之一走,所有着火的格子都会蔓延(空格与着火格有公共边 ...

  8. 解题报告:【kuangbin带你飞】专题九 连通图

    目录 A.POJ 1236 Network of Schools(有向图缩点) B.UVA 315 Network(找割点) C.UVA 796 Critical Links(桥) D.POJ 369 ...

  9. 无向图的割顶、桥、BCC和eBCC相关

    几个例题代码待填 割顶:若去掉一个点和与这个点相连的边后,图不再连通,则这个点是割顶. ​ 求法:若节点\(u\)存在一棵子树\(v\)满足\(v\)中所有节点的回边都指向\(u\)及以下的节点(即\ ...

最新文章

  1. 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素找不到与此协定匹配的终结点元素
  2. leetcode算法题--逆波兰表达式求值
  3. C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。...
  4. Redis笔记之常用命令
  5. Apache虚拟目录和多端口多主机名配置
  6. [转]加密技术在企业数据安全中的应用
  7. 『转』陆涛为什么不爱米莱
  8. 两个卡巴斯基 6.0 官方简体中文版授权文件
  9. Windows 平台上使用 cwRsync做文件同步
  10. flash builder java_如何在具有Java 1.7的OSX上运行FlashBuilder 4.7
  11. java计算器取余_java计算器代码,只有加减乘除和取余运算的??
  12. Linux Syslog日志服务器的搭建
  13. 阿里中间件技术专家魏鹏:基于Java容器的多应用部署技术实践
  14. html中背景条纹效果,css3 条纹背景滚动效果
  15. 基于安卓的校园订餐系统开发设计
  16. 微信圈子|微卡技术栈
  17. Linux TWI开发指南
  18. 头文件intrins.h的用法
  19. 推动RISC-V拾级而上 赛昉科技发布两款高性能产品: JH7110多媒体处理器与VisionFive 2开发板
  20. 分布式技术(下)-RedisFastDFSRabbitMQ

热门文章

  1. 欧拉筛+埃式筛求素数
  2. 在GitHub上删除项目后,在Android Studio上传项目依然提示project is already on github
  3. SonarQube安装步骤 Windows10系统
  4. Shell学习笔记一
  5. Zookeeper 入门指北
  6. Java程序猿修炼之道 之 Logging(3/3) - 怎么分析Log
  7. Ubuntu离线安装VSCode(附带前期准备工作)
  8. Git tag常用命令分享
  9. 【emWin】例程五:显示数值
  10. 一些好用的nginx第三方模块