无向图求桥 UVA 796

***桥的概念:无向连通图中,如果删除某边后,图变 成不连通,则称该边为桥。***
***一条边(u,v)是桥,当且仅当(u,v)为树枝边,且 满足dfn(u)<low(v)(前提是其没有重边),非树枝边不可 能是桥
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=122091#problem/C***
***在这里还用了vector来保存一个图,这样会省去很大的空间***
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define N 100005 int n, m;
int dfn[N], low[N], Father[N];
int Time; vector<vector<int> > G; struct node
{
int x, y;
}bridge[N]; int cmp(node a, node b)
{
if(a.x!=b.x)
return a.x<b.x;
return a.y<b.y;
} void Init()
{
G.clear();
G.resize(n+5);
memset(dfn, 0, sizeof(dfn));
memset(low, 0, sizeof(low));
memset(Father, 0, sizeof(Father));
Time=0;
} void Tarjan(int u, int fa)
{
dfn[u]=low[u]=++Time;
Father[u]=fa;
int len=G[u].size(), v; for(int i=0; i<len; i++)
{
v=G[u][i];
if(!dfn[v])
{
Tarjan(v, u);
low[u]=min(low[u], low[v]);
}
else if(fa!=v)
low[u]=min(low[u], dfn[v]);
}
} void solve()
{
for(int i=0; i<n; i++)
{
if(!low[i])
Tarjan(i, -1);
} int ans=0, v; for(int i=0; i<n; i++)
{
v=Father[i];
if(v!=-1&&dfn[v]<low[i])
{
bridge[ans].x=i;
bridge[ans].y=v;
if(bridge[ans].x>bridge[ans].y)
swap(bridge[ans].x, bridge[ans].y);
ans++;
}
} sort(bridge, bridge+ans, cmp); printf("%d critical links\n", ans); for(int i=0; i<ans; i++)
{
printf("%d - %d\n", bridge[i].x, bridge[i].y);
}
printf("\n");
} int main()
{
while(~scanf("%d", &n))
{
Init();
for(int i=1; i<=n; i++)
{
int a, b;
scanf("%d (%d)", &a, &m);
while(m--)
{
scanf("%d", &b);
G[a].push_back(b);
G[b].push_back(a);
}
}
solve();
}
return 0;
}
无向图求桥 UVA 796的更多相关文章
- UVA 796 Critical Links(无向图求桥)
题目大意:给你一个网络要求这里面的桥. 输入数据: n 个点 点的编号 (与这个点相连的点的个数m) 依次是m个点的 输入到文件结束. 桥输出的时候需要排序 知识汇总: 桥: 无向连通 ...
- UVA 796 Critical Links(模板题)(无向图求桥)
<题目链接> 题目大意: 无向连通图求桥,并将桥按顺序输出. 解题分析: 无向图求桥的模板题,下面用了kuangbin的模板. #include <cstdio> #inclu ...
- 无向图求割点 UVA 315 Network
输入数据处理正确其余的就是套强联通的模板了 #include <iostream> #include <cstdlib> #include <cstdio> #in ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- HDU 4738--Caocao's Bridges(重边无向图求桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- uva 796 Critical Links(无向图求桥)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Critical Links-UVa796(无向图求桥)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- (连通图 模板题 无向图求桥)Critical Links -- UVA -- 796
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- POJ 3694 Network(并查集缩点 + 朴素的LCA + 无向图求桥)题解
题意:给你一个无向图,有q次操作,每次连接两个点,问你每次操作后有几个桥 思路:我们先用tarjan求出所有的桥,同时我们可以用并查集缩点,fa表示缩点后的编号,还要记录每个节点父节点pre.我们知道 ...
- POJ 3694 Network(无向图求桥+重边处理+LCA)
题目大意: 给你一个无向图,然后再给你一个Q代表有Q次询问,每一次加一条边之后还有几座桥.在这里要对重边进行处理. 每次加入一条边之后,在这条搜索树上两个点的公共祖先都上所有点的桥都没了. 这里重边的 ...
随机推荐
- vivo 容器平台资源运营实践
作者:vivo 互联网服务器团队 - Chen Han 容器平台针对业务资源申请值偏大的运营问题,通过静态超卖和动态超卖两种技术方案,使业务资源申请值趋于合理化,提高平台资源装箱率和资源利用率. 一. ...
- flask中使用pyjwt
**pyjwt使用教程: ** https://pyjwt.readthedocs.io/en/stable/ 使用案例 import datetime from flask import Flask ...
- cmd命令根据端口号杀进程
1.根据端口查到进程pid netstat –ano|findstr 端口号 1 2.使用taskkill命令杀死进程 taskkill /pid pid 1 温馨提醒: 1.执行完第一步后,命令行显 ...
- Ubuntu系统部署后优化
Ubuntu系统配置调整 前期准备 #更改主机名,重启后不变 hostnamectl set-hostname Zabbix-Server01 #更改主机名,重启后变回从前 hostname Zabb ...
- springboot整合hibernate(非JPA)(一)
springboot整合hibernate(非JPA)(一) springboot整合hibernate,非jpa,若是jpa就简单了,但是公司项目只有hibernate,并要求支持多数据库,因此记录 ...
- UE5: 探究Actor Tick的注册与执行
1. 前情提要 因工作需要,有在编辑器模式下执行Actor的Tick函数的需求.经过查阅资料,了解到重载Actor::ShouldTickIfViewportOnly函数可以实现在编辑器视口下也可以执 ...
- Kubernetes Headless服务
1.概述 Headless Services是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP,也被称为无头服务,通过DNS解析提 ...
- Mybatis源码4 Cache的实现和其原理
Mybatis CachingExecutor, 二级缓存,缓存的实现 一丶二级缓存概述 上一章节,我们知道mybaits在构造SqlSession的时候,需要让SqlSession持有一个执行器,如 ...
- 限制左键拖拽图片阴影vue
<template> <div> <img ref="image" :src="imageUrl" :style="im ...
- 去哪儿网 (Qunar) DevOps 实践分享
这是 2017 年王晓翔在 msup 全球软件案例研究峰会上的分享,重点分享了提高工程效率过程中存在的问题.取得的成果和要做的事情.内容详实,具有可操作性.我有幸看到了,所以在征得晓翔的同意下重新截图 ...