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.pswp.cn/news/249948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249948.shtml
英文地址,請注明出處:http://en.pswp.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;時效性…