求桥,边双连通缩点 2022-01-10 图论 一个无向图,问最少添加多少条边使任意两点有两条不同路径。 即构造一个边双连通图,边双连通缩点后是一棵树,度数为1的点为a,结论是需要添加(a+1)/2条边。 【求桥,边双连通缩点】 #include #include #include #include #include #include #include #include #include #include #define ll long long #define ull unsigned long long #define debug puts("======"); #define inf (1<<30) #define eps 1e-8 using namespace std; const int MAXN=6005; const int MAXE=20005; struct Edge { int u, v; int next; } edge[MAXE]; int head[MAXN], tot; int n,m; int dfn[MAXN],low[MAXN]; bool vis_e[MAXE]; //是否访问了边 bool is_bridge[MAXE]; //是否是桥 int dfs_clock; int Block[MAXN]; //点所属边双 int block; //边双数 vectorvec[MAXN]; //缩点后图 bool vis[MAXN]; void init(int n) { memset(head, -1, sizeof(head[0])*(n+1)); tot = 0; } void addEdge(int u, int v) { edge[tot].u = u; edge[tot].v = v; edge[tot].next = head[u]; head[u] = tot++; } void dfs(int cur) { dfn[cur] = low[cur] = ++dfs_clock; for(int i = head[cur]; i!=-1; i = edge[i].next) { int tv = edge[i].v; if(!dfn[tv]) { vis_e[i] = vis_e[i^1] = true; //标记边可以处理重边 dfs(tv); low[cur] = min(low[cur], low[tv]); if(dfn[cur] < low[tv]) is_bridge[i] = is_bridge[i^1] = true; } else if(dfn[tv] < dfn[cur] && !vis_e[i]) { vis_e[i] = vis_e[i^1] = true; low[cur] = min(low[cur], dfn[tv]); } } } void find_bridge(int n) { dfs_clock = 0; memset(dfn, 0, sizeof(dfn[0])*(n+1)); memset(vis_e, 0, sizeof(vis_e[0])*tot); memset(is_bridge, 0, sizeof(is_bridge[0])*tot); for(int i = 1; i <= n; ++i) if(!dfn[i]) dfs(i); } void DFS(int u) { vis[u]=1; Block[u]=block; for(int i = head[u]; i!=-1; i = edge[i].next) { int v=edge[i].v; if(vis[v]||is_bridge[i]) continue; DFS(v); } } //不经过桥的情况下,dfs求出每个变双 void find_scc() { memset(vis,0,sizeof(vis)); block=0; for(int i=1; i<=n; i++) { if(!vis[i]) { ++block; vec[i].clear(); DFS(i); } } int deg[MAXN]; memset(deg,0,sizeof(deg)); for(int i=0; i 推荐阅读 汽车积碳是什么意思 redis多节点同步 27岁有稳定工作,想用20万存款当做第二职业来投资,投资什么好呢? 上海戏剧学院分数线 2019年上海戏剧学院分数线 去加拿大必买清单 去加拿大买什么最划算 室内阳台养什么花最好 室内阳台适合养什么花好 火理财什么时间可以申请债权转让?债权转让收费吗 塑料菜板发黑怎么办 癌细胞|癌细胞已经转移,为什么人的精神依旧很好,而且很能吃?是好事? 详细步骤及注意事项 g2810加墨水后如何操作 佳能相机7100 佳能7100单反 有什么好看的书推荐? 你喜欢看军事小说吗? 空气阻尼器时间继电器 空气阻尼器结构图 2023春节坐高铁需要全程戴口罩吗 2021春节能坐高铁吗 台高官被问“你有接受过性招待吗 农村籍独生子女补贴如何领取?四类人无法领取有你吗? 甲氰菊酯有效是多久 甲氰菊酯药效是几天,水里多久失效 c语言连接数据库函数 c语言数据库连接池 有宠app怎么关闭资讯推送通知?有宠app关闭资讯推送通知的方法 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...) 玩一玩|超立方体及其可视化(Processing) #|【牛客】牛客练习赛67-E-牛妹游历城市——位运算优化 图论|POJ1364 King 差分约束 图论|tarjan算法之——割点和桥 Codeforces 1076D Edge Deletion——最短路+dfs 线段树|FZU - 2277(树链剖分或dfs序+线段树) 贪心|Codeforces D. Solve The Maze (bfs & 贪心) (Round #648 Div.2) online|hdu4115Eliminate the Conflict