【UOJ#67】新年的毒瘤 Tarjan 割点
#67. 新年的毒瘤
UOJ直接黏贴会炸... 还是戳这里吧: http://uoj.ac/problem/67#tab-statement
Solution
看到这题的标签就进来看了一眼。
想了一个比较胡搞的方法,因为删除割点就会产生多个块,那么割点是不能被割的,所以只能割非割点。
删除非割点后是棵树,说明边数是N-2...然后求一下每个点的度...
只要不是割点,并且割掉这个点剩的边是N-2条,就输出.....
然后就A了...感觉还是很科学的。 (这个Tarjan模板太好打了...顺便求了个点双...)
Code
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstring>
- #include<algorithm>
- #include<vector>
- using namespace std;
- #define LL long long
- inline int read()
- {
- int x=,f=; char ch=getchar();
- while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
- while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
- return x*f;
- }
- #define MAXN 100010
- int N,M,tot;
- LL sum;
- struct EdgeNode{int next,to,from;}edge[MAXN<<];
- int head[MAXN],cnt=;
- void AddEdge(int u,int v) {cnt++; edge[cnt].next=head[u]; head[u]=cnt; edge[cnt].to=v;}
- void InsertEdge(int u,int v) {AddEdge(u,v); AddEdge(v,u);}
- #define Pa pair<int,int>
- vector<int>BCC[MAXN];
- Pa st[MAXN]; int top;
- int dfn[MAXN],low[MAXN],dfsn,cut[MAXN],bcc,belong[MAXN],d[MAXN];
- void Tarjan(int now,int last)
- {
- dfn[now]=low[now]=++dfsn; int son=;
- for (int i=head[now]; i; i=edge[i].next)
- if (!dfn[edge[i].to])
- {
- st[++top]=make_pair(now,edge[i].to); son++;
- Tarjan(edge[i].to,now); low[now]=min(low[now],low[edge[i].to]);
- if (dfn[now]<=low[edge[i].to])
- {
- cut[now]=; bcc++; BCC[bcc].clear(); int tnow=-,tto=-;
- while ()
- {
- tnow=st[top].first,tto=st[top].second; top--;
- if (belong[tnow]!=bcc) BCC[bcc].push_back(tnow),belong[tnow]=bcc;
- if (belong[tto]!=bcc) BCC[bcc].push_back(tto),belong[tto]=bcc;
- if (tnow==now && tto==edge[i].to) break;
- }
- }
- }
- else if (dfn[edge[i].to]<dfn[now] && edge[i].to!=last)
- st[++top]=make_pair(now,edge[i].to),low[now]=min(low[now],dfn[edge[i].to]);
- if (last< && son==) cut[now]=;
- }
- int main()
- {
- N=read(),M=read();
- for (int x,y,i=; i<=M; i++) x=read(),y=read(),InsertEdge(x,y),d[x]++,d[y]++;
- for (int i=; i<=N; i++) if (!dfn[i]) Tarjan(i,-);
- for (int i=; i<=N; i++) if (!cut[i] && d[i]==M-N+) tot++;
- printf("%d\n",tot);
- for (int i=; i<=N; i++) if (!cut[i] && d[i]==M-N+) printf("%d ",i); puts("");
- return ;
- }
【UOJ#67】新年的毒瘤 Tarjan 割点的更多相关文章
- uoj 67 新年的毒瘤 tarjan求割点
#67. 新年的毒瘤 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/67 Description 辞旧迎新之际 ...
- UOJ 67 新年的毒瘤 - Tarjan
Description 给出一个无向图, 要求找出某个点$u$, 去掉$u$和$u$所连的边, 所剩下的节点构成一棵树. Solution 首先, 割点肯定是不可能满足条件的, 因为去掉割点后会构成若 ...
- uoj 67 新年的毒瘤 割点
题目链接: 题目 #67. 新年的毒瘤 问题描述 辞旧迎新之际,喜羊羊正在打理羊村的绿化带,然后他发现了一棵长着毒瘤的树. 这个长着毒瘤的树可以用 nn 个结点 mm 条无向边的无向图表示.这个图中有 ...
- uoj#67. 新年的毒瘤(割顶)
#67. 新年的毒瘤 辞旧迎新之际,喜羊羊正在打理羊村的绿化带,然后他发现了一棵长着毒瘤的树. 这个长着毒瘤的树可以用n个结点m 条无向边的无向图表示.这个图中有一些结点被称作是毒瘤结点,即删掉这个结 ...
- UOJ#67. 新年的毒瘤
传送门 练习一下Tarjan的模板. 求一下割点,然后加个约束条件判一下特殊点,剩下的就是所求点. //UOJ 67 //by Cydiater //2016.10.27 #include <i ...
- uoj#67 新年的毒瘤【Tarjan】
题目:http://uoj.ac/problem/67 题意:n个节点m条边的图,删除某个节点及他相连的所有边之后,剩下的图就成了一棵树.找出所有这样的节点. 思路:上次去清华面试的B题,当时就是在瞎 ...
- 【UOJ#67】新年的毒瘤(Tarjan)
[UOJ#67]新年的毒瘤(Tarjan) 题面 UOJ 题解 一棵\(n\)个节点的树显然有\(n-1\)条边,在本题中意味着删去一个点之后还剩下\(n-2\)条边.那么找到所有度数为\(m-(n- ...
- 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO
[UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼……这什么鬼. 思考什么点复合条件……(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...
- UOJ67 新年的毒瘤 tarjan
题目传送门 题意:给出一个$N$个点.$M$条边的无向图,找出其中的点,满足去掉该点与和它相连的边之后,这个图会变成一棵树.$N , M \leq 10^5$ 说是毒瘤,真的不毒瘤 思考一下,我们需要 ...
随机推荐
- js中的运算总结(未完待续
[74由几个1几个5几个10几个20组成] var num = 74; for(one = 0; one <= num; one++){ for(five = 0; five <= num ...
- jacascript中的原型链以原型
今地铁上看慕课网js课程,又学习到关于原型的一些知识,记录如下.如有偏差欢迎指正: 三张图要连起来看哦~ 图解: 1.创建一个函数foo. 2.运用函数的prototype属性(这个属性就是实例对象的 ...
- XtraBackup出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'
Xtrabackup做备份时遇到下面错误信息MySQL server: Can't connect to local MySQL server through socket '/tmp/mysql.s ...
- MySQL 使用XtraBackup的shell脚本介绍
mysql_backup.sh是关于MySQL的一个使用XtraBackup做备份的shell脚本,实现了简单的完整备份和增量备份.以及邮件发送备份信息等功能.功能目前还比较简单,后续将继续完善和增加 ...
- 为什么基于TCP UDP服务的一些简单服务端口号都是奇数
TCP是有NCP(网络控制协议)派生出来的,NCP是单工的,通信需要两个链接,所以会预留奇偶端口号.当TCP/UDP成为传输层协议,每个程序只是用一个端口号,且使用奇端口号.
- linux mail利用外部邮箱地址发邮件
mail命令发送邮件需要sendmail或postfix服务 三种常用格式发信 mail -s "标题" xxx@xxx.xxx #第一种方法,你可以把当前shell当成编辑器来用 ...
- 架构实例之Demo_JSP_JavaBean_Servlet
架构实例之Demo_JSP_JavaBean_Servlet 1.开发工具和开发环境 开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),m ...
- php 获取当前服务器 系统
引子: 今天遇到一个问题,当执行文件操作是,不同系统之间的命令是不同的 , 所以需要判断当前系统. $is_win = strtoupper(substr(PHP_OS,0,3))==='WIN'?1 ...
- 第24章 java线程(3)-线程的生命周期
java线程(3)-线程的生命周期 1.两种生命周期流转图 ** 生命周期:**一个事物冲从出生的那一刻开始到最终死亡中间的过程 在事物的漫长的生命周期过程中,总会经历不同的状态(婴儿状态/青少年状态 ...
- Flash Builder 4.7 注册机完美激活方法
Flash Builder 4.7 破解注册方法目前较为通用的三种方法: 第一种:三步修改配置文件方法,这种有开发者反应这种方法在升级和创建纯 AS 项目时会存在问题,但我懒的去试这种方法的主要原因是 ...