LINK1 LINK2 题目大意 给你一个无向连通图,让你给一些点染上黑色,需要满足染色之后,断开任意一个节点,要满足任意一个联通块中剩下的节点中至少有一个黑点 思路 一开始想的是把每一个点双联通分量都把除了割点的size乘上 然后发现随手卡掉 然后发现一下性质 首先所有相邻点双联通分量一定有公共的割点 如果一个双联通分量里面只包含了一个割点,那么如果断掉这个割点那么这个双联通分量就被孤立了 所以这样的双联通分量至少选择一个点 然后如果一个双联通分量有大于等于两个割点,就算一个被割掉了另外一边至…
Problem   UVALive - 5135 - Mining Your Own Business Time Limit: 5000 mSec Problem Description John Digger is the owner of a large illudium phosdex mine. The mine is made up of a series of tunnels that meet at various large junctions. Unlike some owne…
据说这是一道Word Final的题,Orz... 原题链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3136 题意: 给你一个联通图,让你选择一些点,使得这个图的任意一个点消失后,其余的点都能到达某个你选择的点.问你最少选择哪些点,并且输出在最优的情况下,有多少方案. 题解: 一眼看过去,做法很简单,就删掉所有的割点…
刘汝佳白书上面的一道题目:题意是给定一个联通分量,求出割顶以及双连通分量的个数,并且要求出安放安全井的种类数,也就是每个双连通分量中结点数(除开 割顶)个数相乘,对于有2个及以上割顶的双连通分量可以不用安放安全井.如果整个图就是一个双连通分量,那么需要安放两个安全井,种类数是n*(n-1)/2. 代码来自刘汝佳白书: #include <iostream> #include <sstream> #include <cstdio> #include <climits…
题意:n条隧道由一些点连接而成,其中每条隧道链接两个连接点.任意两个连接点之间最多只有一条隧道.任务就是在这些连接点中,安装尽量少的太平井和逃生装置,使得不管哪个连接点倒塌,工人都能从其他太平井逃脱,求最少安装数量和方案. 思路:其实本题就相当于在一张无向图中,涂尽量少的黑点,使得任意删除哪个点,每个连通分量至少有一个黑点.因为不同的连通分量最多只有一个公共点,那一定是割点.可以发现,涂黑割点是不划算的,而且在 一个点-双连通分量中涂黑两个黑点也是不划算的.所以只有当点-双连通分量只有一个割点时…
layout: post title: 训练指南 UVALive - 5135 (双连通分量) author: "luowentaoaa" catalog: true mathjax: true tags: - 双连通分量 - 图论 - 训练指南 Mining Your Own Business UVALive - 5135 题意 在一张无向图中,将一些点涂上黑色,使得删掉图中任何一个点时,每个连通分量至少有一个黑点.问最少能涂几个黑点,并且在涂最少的情况下有几种方案. 显然,一定不能…
E. Tourists time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input output :standard output There are n cities in Cyberland, numbered from 1 to n, connected by m bidirectional roads. The j-th road connects city aj an…
these days I‘m tired!,but very happy... #include<cstdio> #include<cstring> #include<stack> #include<vector> #include<algorithm> using namespace std; typedef long long lld; <<; struct Edge { int u,v; }; vector <int>…
[算法]点双连通分量 [题解]详见<算法竞赛入门竞赛入门经典训练指南>P318-319 细节在代码中用important标注. #include<cstdio> #include<algorithm> #include<vector> #include<stack> #include<cstring> using namespace std; ; ]; int first[maxm],iscut[maxm],dfn[maxm],low…
求出 bcc 后再……根据大白书上的思路即可. 然后我用的是自定义的 stack 类模板: #include<cstdio> #include<cstring> #include<vector> //#include<stack> #include<stdexcept> #include<algorithm> using namespace std; typedef long long LL; ; template <typen…