hihocoder 1183 割点和割边

链接:

http://hihocoder.com/problemset/problem/1183

代码:

 1 #include <map>
 2 #include <set>
 3 #include <cmath>
 4 #include <queue>
 5 #include <stack>
 6 #include <cstdio>
 7 #include <string>
 8 #include <vector>
 9 #include <cstdlib>
10 #include <cstring>
11 #include <sstream>
12 #include <iostream>
13 #include <algorithm>
14 #include <functional>
15 using namespace std;
16 #define rep(i,a,n) for (int i=a;i<n;i++)
17 #define per(i,a,n) for (int i=n-1;i>=a;i--)
18 #define all(x) (x).begin(),(x).end()
19 #define pb push_back
20 #define mp make_pair
21 #define lson l,m,rt<<1  
22 #define rson m+1,r,rt<<1|1 
23 typedef long long ll;
24 typedef vector<int> VI;
25 typedef pair<int, int> PII;
26 const ll MOD = 1e9 + 7;
27 const int INF = 0x3f3f3f3f;
28 const int MAXN = 2e4 + 7;
29 // head
30 
31 int n, m, order = 0;
32 int low[MAXN], dfn[MAXN];
33 int par[MAXN], son[MAXN];
34 VI G[MAXN];
35 VI cutpoint;
36 vector<PII> cutedge;
37 
38 void tarjan(int u) {
39     dfn[u] = low[u] = ++order;
40     bool flag = false;
41     rep(i, 0, G[u].size()) {
42         int v = G[u][i];
43         if (!dfn[v]) {
44             son[u]++;
45             par[v] = u;
46             tarjan(v);
47             if (low[v] >= dfn[u]) flag = true;
48             if (low[v] > dfn[u]) cutedge.pb(mp(min(v, u), max(v, u)));
49             low[u] = min(low[u], low[v]);
50         }
51         else if (v != par[u]) low[u] = min(low[u], dfn[v]);
52     }
53     if ((par[u] == 0 && son[u] > 1) || (par[u] && flag)) cutpoint.pb(u);
54 }
55 
56 int main()
57 {
58     cin >> n >> m;
59     while (m--) {
60         int u, v;
61         scanf("%d%d", &u, &v);
62         G[u].pb(v);
63         G[v].pb(u);
64     }
65     tarjan(1);
66     sort(cutedge.begin(), cutedge.end());
67     sort(cutpoint.begin(), cutpoint.end());
68     if (cutpoint.size() == 0) cout << "Null" << endl;
69     else {
70         cout << cutpoint[0];
71         rep(i, 1, cutpoint.size()) printf(" %d", cutpoint[i]);
72         cout << endl;
73     }
74     rep(i, 0, cutedge.size())
75         printf("%d %d\n", cutedge[i].first, cutedge[i].second);
76     return 0;
77 }

 

转载于:https://www.cnblogs.com/baocong/p/6740320.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu navicat删除目录破解如何保留配置信息

配置信息存储位置&#xff1a; ~/.navicat64/user.reg 这个文件跟windows注册表导出的文件一样 下面分析配置中对我们有用的信息 字体设置&#xff1a; [Software\\PremiumSoft\\NavicatPremium] 1566266955 #time1d556fc440497e6 "AlreadyShowNavicateV121WelcomeS…

前端学习(2398):回顾

# 一、项目初始化## 使用 Vue CLI 创建项目> 注意&#xff1a;不要使用 Git Bash 执行项目创建操作&#xff0c;使用 cmd 或者 powershell 之类的工具。> 如果你还没有安装 VueCLI&#xff0c;或者版本低于 4&#xff0c;请执行下面的命令安装或是升级&#xff1a; >…

ubuntu经常提示:检测到系统程序出现问题

sudo vi /etc/default/apport 修改值 enabled0

前端学习(2399):关于编辑代码编辑器

代码段使用 可以对对应的编辑器去设置代码段

React Native 一些事

ReactJS 是否准备好 有时候我们常常需要监听 ReactJS 的的加载情况。 比如说&#xff0c;当获取一条推送&#xff0c;应用还没有起来&#xff0c;通过点击推送启动应用后&#xff0c;而推送中包含一些我们感兴趣的字段需要处理&#xff0c;我们如果直接把这条通知发送给 ReactJ…

ubuntu下 windows的zip文件打开,中文目录和文件名乱码

sudo apt-get install unar lsar xxx.zip 查看压缩文件内文件名 unar xxx.zip 解压文件 原因&#xff1a;windows下面文件名是GBK编码的&#xff0c;与linux不同。

前端学习(2411):name属性的作用

先纠正一下&#xff0c;这个问题的标题和内容不是一个问题&#xff0c;这里应该是涉及到两个知识点&#xff1a; 组件的 name路由的 name 下面我分别解释一下。 组件的 name 参考链接&#xff1a;https://router.vuejs.org/zh/guide/essentials/named-routes.html 组件的 nam…

HDU 1231 最大连续子序列

http://acm.hdu.edu.cn/showproblem.php?pid1231 Dp[i] 以a[i]元素结尾的子序列的最大和 记录 再记录一下起始位置即可 1 #include <iostream>2 #include <string.h>3 #include <stdio.h>4 using namespace std;5 6 int a[10007];7 int dp[10007];8 int st[…

Servlet生命周期与工作原理

http://www.cnblogs.com/cuiliang/archive/2011/10/21/2220671.html Servlet生命周期分为三个阶段&#xff1a; 1&#xff0c;初始化阶段 调用init()方法 2&#xff0c;响应客户请求阶段  调用service()方法 3&#xff0c;终止阶段  调用destroy()方法 Servlet初始化阶段&…

linux(ubuntu)给vmware中的windows虚拟机共享磁盘

设置vm——options——shared folders&#xff1a; 注意&#xff1a;共享的磁盘不能进行目录监听&#xff0c;比如微信小程序开发工具就无法打开这里面的项目。

javase模拟斗地主洗牌和发牌(54)

1、使用Arraylist集合: 1 package com.it18zhang.day08;2 3 import java.util.ArrayList;4 import java.util.Collections;5 6 public class PokerDemo {7 8 public static void main(String[] args) {9 // TODO Auto-generated method stub 10 //牌合 11 …

sudo apt update提示某个源超时

sudo apt update提示某个源超时 进入软件更新器&#xff0c;设置&#xff0c;选择其他软件&#xff0c;删除超时的连接。

jdk8 list转Map

函数&#xff1a;Collectors.toMapc 使用toMap()函数之后&#xff0c;返回的就是一个Map了&#xff0c;会需要key和value。 toMap()的第一个参数就是用来生成key值的&#xff0c;第二个参数就是用来生成value值的。 第三个参数用在key值冲突的情况下&#xff1a;如果新元素产…

微信小程序 三元运算 checked

预期效果&#xff1a; 根据用户性别&#xff0c;显示radio group&#xff0c;并将相应radio checked 代码如下&#xff1a; <view class"form-line"> <view wx:if"{{userInfo.gender 1 }}">性别&#xff1a;</view> <radio-gr…

C#-ToString格式化

Int.ToString(format): 格式字符串采用以下形式&#xff1a;Axx&#xff0c;其中 A 为格式说明符&#xff0c;指定格式化类型&#xff0c;xx 为精度说明符&#xff0c;控制格式化输出的有效位数或小数位数&#xff0c;具体如下&#xff1a; 格式说明符 说明示例输出C货币2.5.To…

ElasticSearch统计总数据量

统计总数据条数 GET /page-access/_count { } 或 通配符 GET /logstash-*/_count { } 或 多个 GET /page-access,logstash-*/_count { } url中前面的部分就是匹配需统计的索引 返回内容&#xff1a; { "count" : 3478311, "_shards" : { …

js基础总结

javascript:js-15天10-12:js原生态代码Ajax和jquery13-152天前台框架 bootstrap ---------------------------------------------------------------------js_01---------------------------------------------------------------------1.什么是js&#xff1f;原名javascript&a…

Spring Cloud Gateway Predicate.Path过滤分析

源码位置 spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactory.java 过滤方法 Overridepublic Predicate<ServerWebExchange> apply(Config config) {synchronized (this.pathPatter…

《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(1) -- 性能...

1. 性能 在浏览器端&#xff0c;可能通过浏览器缓存、使用页面压缩、合理布局页面、减少cookie传输等手段改善性能。还可以使用CDN&#xff0c;将网站静态内容分发至离用户最近的网络服务商机房。可以在网站机房部署反向代理服务器&#xff0c;缓存热点文件&#xff0c;加快请求…