UVA315- Network(无向图割点)
题意: 给出一张无向图,求割点的个数
思路:非常裸的题目。直接套用模版就可以。
代码:
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- const int MAXN = 1005;
- struct Edge{
- int to, next;
- bool cut;
- }edge[MAXN * 10];
- int head[MAXN], tot;
- int Low[MAXN], DFN[MAXN];
- int Index, cnt;
- bool cut[MAXN];
- void addedge(int u, int v) {
- edge[tot].to = v;
- edge[tot].next = head[u];
- edge[tot].cut = false;
- head[u] = tot++;
- }
- void Tarjan(int u, int pre) {
- int v;
- Low[u] = DFN[u] = ++Index;
- int son = 0;
- for (int i = head[u]; i != -1; i = edge[i].next) {
- v = edge[i].to;
- if (v == pre) continue;
- if (!DFN[v]) {
- son++;
- Tarjan(v, u);
- if (Low[u] > Low[v]) Low[u] = Low[v];
- if (u != pre && Low[v] >= DFN[u]) {
- cut[u] = true;
- }
- }
- else if (Low[u] > DFN[v])
- Low[u] = DFN[v];
- }
- if (u == pre && son > 1) cut[u] = true;
- }
- void init() {
- memset(head, -1, sizeof(head));
- memset(DFN, 0, sizeof(DFN));
- memset(cut, false, sizeof(cut));
- tot = 0;
- Index = cnt = 0;
- }
- int main() {
- int n;
- while (scanf("%d", &n) && n) {
- init();
- int u, v;
- while (scanf("%d", &u) && u) {
- char ch;
- while (scanf("%d%c", &v, &ch)) {
- addedge(u, v);
- addedge(v, u);
- if (ch == '\n') break;
- }
- }
- for (int i = 1; i <= n; i++)
- if (!DFN[i])
- Tarjan(i, i);
- for (int i = 1; i <= n; i++)
- if (cut[i])
- cnt++;
- printf("%d\n", cnt);
- }
- return 0;
- }
版权声明:本文博主原创文章,博客,未经同意不得转载。
UVA315- Network(无向图割点)的更多相关文章
- POJ1144 Network 无向图割点
题目大意:求以无向图割点. 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点. 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v-&g ...
- UVA315 Network 连通图割点
题目大意:有向图求割点 题目思路: 一个点u为割点时当且仅当满足两个两个条件之一: 1.该点为根节点且至少有两个子节点 2.u不为树根,且满足存在(u,v)为树枝边(或称 父子边,即u为v在搜索树中的 ...
- uva-315.network(连通图的割点)
本题大意:求一个无向图额割点的个数. 本题思路:建图之后打一遍模板. /**************************************************************** ...
- tarkjan求无向图割点模板
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; ; struct node { ...
- UVA315 Network —— 割点
题目链接:https://vjudge.net/problem/UVA-315 A Telephone Line Company (TLC) is establishing a new telepho ...
- UVA315 (无向图求割点)
题目大意:给定一个无向图,问共存在多少个割点.(割点:去掉此点后此图会断开连接)割点有两种存在:一种是第一次搜索的根节点,若其子节点数超过两个,则此点去掉后图会 断开连接,因此此点为割点:或者此点为搜 ...
- poj 1144 Network 无向图求割点
Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. Th ...
- Network -UVa315(连通图求割点)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=5&page=sh ...
- [UVA315]Network(tarjan, 求割点)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- POJ 1144 Network(无向图连通分量求割点)
题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...
随机推荐
- Node.js : 我只需要一个店小二
刚刚开始接触Node.js时, google了很多文章,但发现大部分都是泛泛的介绍安装,配置,以及介绍几个小例子 有一种雾里观花的感觉,所以非常困惑,不知道Node.js到底解决了什么问题,它的优势到 ...
- JDBC批处理executeBatch
JDBC运行SQL声明,有两个处理接口,一PreparedStatement,Statement,一般程序JDBC有多少仍然比较PreparedStatement 只要运行批处理,PreparedSt ...
- Ubuntu 下一个 vim 建立python 周围环境 构造
于Windows通过使用各种现成的工具使用,去Linux下一个,没有一个关于线索--总之google有些人的经验,折腾来折腾,开发环境也算是一个好工作. 1. 安装完成vim # apt-get in ...
- 什么是“Bash”破绽?
摘要:近来的linux系统出现"Bash"漏洞可以被认为是第一个互联网造成安全讨论和思考.错的资料. 什么是"Bash"漏洞?它是怎样工作的?它是否可以成为新的 ...
- FTP文件操作之下载文件
前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了.所以今天就跟大家一起学习学习使用ftp下载文件. 知道了怎么上传,那么下载也就变得很简单了,上传是把文 ...
- 2014年CCNU-ACM暑期集训总结
2014年CCNU-ACM暑期集训总结 那个本期待已久的暑期集训居然就这种.溜走了.让自己有点措手不及.很多其它的是对自己的疑问.自己是否能在ACM这个领域有所成就.带着这个疑问,先对这个暑假做个总结 ...
- UVa 524 Prime Ring Problem(DFS , 回溯)
题意 把1到n这n个数以1为首位围成一圈 输出全部满足随意相邻两数之和均为素数的全部排列 直接枚举排列看是否符合肯定会超时的 n最大为16 利用回溯法 边生成边推断 就要快非常多了 #inc ...
- uboot的relocation原理具体分析
近期在一直在做uboot的移植工作,uboot中有非常多值得学习的东西.之前总结过uboot的启动流程,但uboot一个非常核心的功能没有细致研究.就是uboot的relocation功能. 这几天研 ...
- Best Time to Buy and Sell Stock I,II,III [leetcode]
Best Time to Buy and Sell Stock I 你只能一个操作:维修preMin拍摄前最少发生值 代码例如以下: int maxProfit(vector<int> & ...
- 【从翻译mos文章】不再用par file如果是,export or import 包含大写和小写表名称表
不再用par file如果是,export or import 包含大写和小写表名称表 参考原始: How to Export or Import Case Sensitive Tables With ...