题目链接:https://vjudge.net/problem/HDU-4612 题目:一个大地图,给定若干个连通图,每个连通图中有若干个桥,你可以在任意某个连通图的 任意两个点添加一条边,问,添加一条边后,大地图中最少剩下几个桥. 思路:tarjan缩点,重构图,对每个新图跑两次dfs求出树的直径,取所有新图的直径max, 答案就是  大地图总桥数 - max(树的直径). #include <iostream> #include <cstdio> #include <al…
题目链接:https://vjudge.net/problem/HDU-4635 题目:有向图,给定若干个连通图,求最多还能添加几条边,添完边后,图仍然要满足 (1)是简单图,即没有重边或者自环 (2)不是有向强连通图 思路:我们可以这么想,n个顶点,一个有向图边数最多,就是有向完全图,则边数为n*(n-1). 要满足不是强连通图,我们可以假设有一个tarjan缩成的点(scc),它不能到达其他所有点,或者其他所有点 不能到达它,假设这个scc有k个顶点,也就是说,k*(n-k)条边是不存在的,…
题意:有一个无向连通图,现在问添加一条边后最少还有几个桥 分析:先把图缩点,然后重构图为一棵树,求出来树的直径即可,不过注意会有重边,构树的时候注意一下 *********************************************************************** ; ], e2[MAXN*]; ], fa[MAXN]; ;     e[ cnt[k] ].next = Head[u];     Head[u] = cnt[k]++; } ; j=e2[j].ne…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 给一个无向图, 加上一条边后,求桥至少有几个: 那我们加的那条边的两个顶点u,v:一定是u,v之间含有桥的数量最多,然后uv之间的桥都没了,剩下的就是要求的结果: 树的直径的定义刚好就是两个节点之间含有最多的边: 下面是有关树的直径的知识: 这个题目需要手动扩展,不然会爆栈,而且手动扩展的话要用C++提交. 代码: #pragma comment(linker, "/STACK:1024000…
求在图中新建一条边后  剩下的最少的桥的数量..先tarjan求桥的数量..然后缩点..以连通分量为点建图  bfs求直径 最后用桥的数量减去直径即为答案 bfs求直径 https://www.cnblogs.com/WTSRUVF/p/9307517.html #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <algorithm>…
题目链接:https://vjudge.net/contest/67418#problem/F 题目大意:给你一个图,让你加一条边,使得原图中的桥尽可能的小.(谢谢梁学长的帮忙) 我对重边,tarjan算法中的各个数组的作用,以及需要哪些数组,还有一些不可取的地方. 重边:原来一直以为无向图没有重边,,,在进行无向图的缩点的时候,假设 u- >已经走过了,那么 在不加重边的情况下,v- > u是不能走的.如果加重边了,u->v,这个时候,假设本来v-> u 是桥,但是加了之后就不是…
题意:给出n个点和m条边的无向图,存在重边,问加一条边以后,剩下的桥的数量最少为多少. 题解: 你把这个无向图缩点后会得到一个只由桥来连接的图(可以说这个图中的所有边都是桥,相当于一棵树),然后我们只需要找出来这棵树的最大直径(即相距最远的两个点).然后我们可以把得到的这条链的首尾两端连起来,因为这样减少的桥最多.把所有桥减去这条链上的桥就是答案 找树的直径有两种方法,一种树形dp,一种两次dfs算法.时间复杂度都是O(n) 先说dfs: 实现:随意选取一个点作为我们的起点x,找到以x为起点的和…
    ID Origin Title   76 / 163 Problem A POJ 1236 Network of Schools   59 / 177 Problem B UVA 315 Network   49 / 151 Problem C UVA 796 Critical Links   28 / 109 Problem D POJ 3694 Network   39 / 98 Problem E POJ 3177 Redundant Paths   33 / 230 Proble…
layout: post title: 「kuangbin带你飞」专题十九 矩阵 author: "luowentaoaa" catalog: true tags: mathjax: true - kuangbin - 矩阵 传送门 A.CodeForces - 450B Jzzhu and Sequences 题意 水题,主要是拿来试试模板 题解 F[i]=f[i-1]-f[i-2] #include<bits/stdc++.h> using namespace std;…
题目链接: Hdu 4612 Warm up 题目描述: 给一个无向连通图,问加上一条边后,桥的数目最少会有几个? 解题思路: 题目描述很清楚,题目也很裸,就是一眼看穿怎么做的,先求出来双连通分量,然后缩点重新建图,用bfs求树的直径,直径的长度就是减去桥的数目. 这个题目需要手动扩展,而且手动扩展的话要用C++提交,G++re哭了. #include <cstdio> #include <queue> #include <cstring> #include <i…