poj3713 Transferring Sylla 枚举+tarjan判割点

其实就是判断是否为三连通图

三连通图指的是去掉3个点就不连通的图,但是并没有直接求三连通的算法。著名的Tarjan算法可以求解连通和割点,再枚举删除一个点就能达到三连通的目的。

先看用例2,是由用例1去掉一条边而变成非三连通图的:

至少造成了2和3非三连通:

我们来思考如何推导出2和3非三连通,假设从上图中删除了节点0,通过Tarjan算法,我们可以发现节点1是割点:

 

那么只需删除从3到割点和从3到我们枚举删除的节点0的两条边,就可以将3和2分割开来:

才删除了两条边2和3就不连通了,这个图显然不是三连通图。

 

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 20010;
int cnt,flag,times,del,root;
int head[maxn],low[maxn],dfn[maxn];
struct no
{int v,next;
}Eg[2*maxn];
void init( )
{cnt=0;memset(head,-1,sizeof(head));
}
void add(int form,int to)
{Eg[cnt].v=to;Eg[cnt].next=head[form];head[form]=cnt++;
}
void dfs(int u,int fa)
{if(flag)return ;int tot=0;low[u] = dfn[u] = ++times;for(int i=head[u] ; i!=-1 ; i=Eg[i].next){int v=Eg[i].v;if(v==fa||v==del)continue;if(!dfn[v]){tot++;dfs(v,u);low[u]=min(low[u],low[v]);//判断割点if((u==root&&tot>1)||(u!=root&&low[v]>=dfn[u]))flag=1;}elselow[u]=min(low[u],dfn[v]);}
}
int main( )
{int n,m;while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0)break;init();for(int i=0 ; i<m ; i++){int u,v;scanf("%d%d",&u,&v);add(u,v);add(v,u);}flag=0;for(int i=0 ; i<n ; i++){del = i ; times = 0;memset(dfn,0,sizeof(dfn));root = 0;if(del==0)root=1;dfn[del] = 1;dfs(root,-1);for(int j=0 ; j<n ; j++){if(!dfn[j]){flag=1;break;}}if(flag)break;}if(flag)puts("NO");elseputs("YES");}return 0;}
View Code

 

转载于:https://www.cnblogs.com/shuaihui520/p/9309461.html

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

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

相关文章

html标签大全

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>This is study note</title><base href"我是做外链的&#xff0c;一般在head里面" target"_blank"><style type&q…

布尔文本搜索

select text from products where Match(# column) Against(#condition bool* IN BOOLEAN MODE); 布尔操作符     包含 必须存在 -    排除,必须不存在(即使包含其他指定的词也不返回) >    增加排序等级 <    降低排序等级 ()    把词组成子表达式 …

Linux 安装Zookeeper单机版(使用Mac远程访问)

阅读本文需要先阅读安装Zookeeper<准备> 新建目录 mkdir /usr/local/zookeeper 解压 cd zookeeper压缩包所在目录 tar -xvf zookeeper-3.4.12.tar.gz -C /usr/local/zookeeper 新建目录 mkdir /usr/local/zookeeper/zookeeper-3.4.12/data 配置文件准备 cp /usr/local/zo…

深入vue

转载于:https://www.cnblogs.com/smzd/p/8547748.html

java全栈

前端&#xff1a;HTML/HTML5、CSS/CSS3、Javascript、jQuery、RequireJS、AngularJS、Vue 后端&#xff1a;Java、Struts2/Spring MVC、JPA/Mybatis、Spring Boot 安全&#xff1a;Shiro、Spring Security 中间件&#xff1a;Dubbo、ActiveMQ/RabbitMQ、Nginx 数据库&#…

vue与webpack

由于最近在vue-cli生成的webpack模板项目的基础上写一个小东西&#xff0c;开发过程中需要改动到build和config里面一些相关的配置&#xff0c;所以刚好趁此机会将所有配置文件看一遍&#xff0c;理一理思路&#xff0c;也便于以后修改配置的时候不会“太折腾”。 Vue-webpack项…

size_t为什么重要

参考&#xff1a;https://www.zhihu.com/question/24773728/answer/66535663前言&#xff1a;使用size_t可能会提高代码的可移植性、有效性或者可读性&#xff0c;或许同时提高这三者。在标准C库中的许多函数使用的参数或者返回值都是表示的用字节表示的对象大小&#xff0c;比…

html--form表单常用操作

form表单 用于收集用户信息&#xff0c;如&#xff1a;登录、注册等场景&#xff1b;所有要提交的数据都必须放在form标签中<form action" " method" "> action&#xff1a;提交地址、动作&#xff0c;与input标签中type标签的submit属性相关联。 &…

MySQL触发器(转载)

触发器&#xff08;trigger&#xff09;是数据库中的一个很重要的、很实用的基于事件的处理器&#xff0c;在处理一些业务需求的时候&#xff0c;使用触发器会很方便。似乎在《高性能MySQL》中&#xff0c;对触发器作了一定的描述&#xff0c;也提到使用中的一些优势和局限性&a…

神级bug解决方法

真的是神级bug,util包中的Arrays类导入不了&#xff0c;一直报错。原因&#xff1a;JDK 1.8和Myeclipse 8.5不兼容&#xff0c;导致java.util.Arrays类无法被编译。所以报错。解决方法&#xff1a;1.降低jdk版本。2.升高Myeclipse版本转载于:https://www.cnblogs.com/yanlongw/…

es6注意点

补救方法&#xff1a; 详情&#xff1a;http://es6.ruanyifeng.com/#docs/array 取出文本内容 实现深拷贝 jq实现不完全深拷贝 jQuery.extend jQuery.fn.extend function () {var options, name, src, copy, copyIsArray, clone,target arguments[0] || {},i 1,length ar…

input标签用法解读

HTML5/HTML中标签用法解读 OK&#xff01;今天博主为小伙伴们介绍的内容是HTML5/HTML中标签的用法&#xff0c;&#xff0c;&#xff0c; &#xff0c;emmm图文并茂哦&#xff01; 下面正式开始内容的介绍&#xff1a;首先&#xff0c;直观上说标签规定了用户可以在其中输入数据…

SpringBoot项目遇到的一些问题

SpringBoot项目整合JPA报错转载于:https://www.cnblogs.com/xb1223/p/10195054.html

关于SpringBoot中的多数据源集成

引言 其实对于分库分表这块的场景&#xff0c;目前市场上有很多成熟的开源中间件&#xff0c;eg&#xff1a;MyCAT&#xff0c;Cobar&#xff0c;sharding-JDBC等。 本文主要是介绍基于springboot的多数据源切换&#xff0c;轻量级的一种集成方案&#xff0c;对于小型的应用可…

实现vue2.0响应式的基本思路

注意&#xff0c;这里只是实现思路的还原&#xff0c;对于里面各种细节的实现&#xff0c;比如说数组里面数据的操作的监听&#xff0c;以及对象嵌套这些细节本实例都不会涉及到&#xff0c;如果想了解更加细节的实现&#xff0c;可以通过阅读源码 observer文件夹以及instance文…

HTML标签类型及特点

一、 概述 HTML&#xff08;Hyper Text Markup Language &#xff09;作为一种标记语言&#xff0c;网页所有的内容均书写在标签内部&#xff0c;标签是组成Html页面的基本元素&#xff0c;因此对标签特性的理解在HTML的学习过程中比较重要。 二、基本分类 HTML中的标签从闭…

打开页面

*<a href"javascript:void(0)" title"google" οnclick"window.parent.addTab(, 测试, Admin/UserRole, 100000)">测试444</a>*转载于:https://www.cnblogs.com/niyl/p/10196528.html

python 大量使用json 存储数据时,格式化输出的方式

import json, pprintdic {name: 234, user_name: yan xia ting yu , list: [ds, a, 2], 你好这是键: 檐下听雨}print(dic)pprint.pprint(dic)print(json.dumps(dic))print(json.dumps(dic, indent2))# {name: 234, user_name: yan xia ting yu , list: [ds, a, 2], 你好这是键…

vue computed 源码分析

我们来看看computed的实现。最简单的一个demo如下&#xff1a; <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> </head> <body> <div id"app"><div name"test&…

软件开发文档整理(之)一张示意图 | 清晰明了

在整个软件开发周期&#xff0c;开发文档是必不可少的资料&#xff0c;它们贯穿于整个开发周期&#xff0c;用来评估计划、规划进度、项目管理、软件测试、软件发布&#xff0c;可以说至关重要。   开发文档必须归档&#xff0c;没有归档的文档作用大打折扣&#xff0c;时效性…