基環樹小結
基環樹
顧名思義,就不解釋過多了,先看一張圖
圖中央的環顯而易見,一般的初始化流程有兩個
(1)找環
void Get_ring(LL u,LL fa){ visit[u]=++cnt; for(LL i=head[u];i;i=dis[i].next){ LL v=dis[i].to; if(v==fa) continue; if(visit[v]){ if(visit[v]<visit[u]) continue; a[++num]=v; f[v]=true; for(;v!=u;v=pre[v]){ a[++num]=pre[v]; f[pre[v]]=true; } }else{ pre[v]=u; Get_ring(v,u); } } }
相關推薦
基環樹小結
基環樹 顧名思義,就不解釋過多了,先看一張圖 圖中央的環顯而易見,一般的初始化流程有兩個 (1)找環 void Get_ring(LL u,LL fa){ visit[u]=++cnt; for(LL i=head[u];i;i=dis[i].next){ L
[bzoj3037/2068]創世紀[Poi2004]SZP_樹形dp_並查集_基環樹
%d turn line dfs 而且 ring name ... find 創世紀 SZP bzoj-3037/2068 Poi-2004 題目大意:給你n個物品,每個物品可以且僅可以控制一個物品。問:選取一些物品,使得對於任意的一個被選取的物品來講,都存在一個
bzoj 1791: [Ioi2008]Island 島嶼【基環樹+單調隊列優化dp】
getchar() ons 變量 pre \n and ostream 答案 getch 我太菜了居然調了一上午…… 這個題就是要求基環樹森林的基環樹直徑和 大概步驟就是找環—>dp找每個環點最遠能到達距離作為點權—>復制一倍環,單調隊列dp 找環是可以拓撲的,
Hdu第八場 樹形dp+基環樹
個數字 樹形dp src int n) 一次 == += ret Card Game 每個牌背面的數字朝正面的數字連一條有向邊 則題目變為問你最少翻轉多少次 能使得每個數字的入度不超過1 首先判斷圖中每個連通塊是不是樹或者基環樹 因為只有樹或者基環樹能使得每個點的入度不超過
HDU - 6393 Traffic Network in Numazu(樹鏈剖分+基環樹)
就是 fine pac ace str and mes scanf != http://acm.hdu.edu.cn/showproblem.php?pid=6393 題意 給n個點和n條邊的圖,有兩種操作,一種修改邊權,另一種查詢u到v的最短路。 分析 n個點和n
騎士 HYSBZ - 1040(基環樹+樹形dp)
inpu c++ desc 匯聚 signed long ons clu inf Z國的騎士團是一個很有勢力的組織,幫會中匯聚了來自各地的精英。他們劫富濟貧,懲惡揚善,受到社會各界的贊揚。最近發生了一件可怕的事情,邪惡的Y國發動了一場針對Z國的侵略戰爭。戰火綿延五百裏,
基環樹
mem 結點 針對 res head lse -c 所有 c++ 樹: 基環樹: 就是比平常的樹多了一條邊。。構成了一個環 做法就是 dfs去找環 然後刪掉環上的任意一條邊,記下u和v 分別以u 和 v 為祖結點 進行樹形dp 分別求出不要u 和 不要v
Session in BSU CodeForces - 1027F(思維 樹 基環樹 離散化)
efi mod else node ffffff 思維 基環樹 連通 lse 題意: 有n門考試,每門考試都有兩個時間,存在幾門考試時間沖突,求考完所有的考試,所用的最後時間的最小值 解析: 對於時間沖突的考試 就是一個聯通塊 把每個考試看作邊,兩個時間看作點,
bzoj 1040: [ZJOI2008]騎士【基環樹+樹形dp】
truct cpp sin getch amp ++ zjoi printf mes 沒考慮可以連著兩個不選……直接染色了 實際上是基環森林,對於每棵基環樹,dfs找出一個環邊,然後斷掉這條邊,分別對這條邊的兩端點做一邊treedp,取max加進答案裏 treedp是設f[
CF875F Royal Questions 基環樹、Kruskal
.html 而且 ++ def fin ext time lan 匹配 題目傳送門:http://codeforces.com/problemset/problem/875/F 題意:有$N$個王子和$M$個公主,每個公主或王子都只能選擇至多一個王子或公主作為自己的結婚對象
CF 859 E Desk Disorder - 結論 - 基環樹
題目大意:有若干二元組(a,b),每個二元組可以選擇first或者second。要求選出的數字兩兩不同的方案數。保證a互不相同。 題解: 首先搞出“因為選了第x個二元組的b就導致要選第y個二元組的b”這件事情。顯然因為a兩兩不同所以這構成了一些內向樹或者內向基環樹(有些內向樹的根具有相同的b
ARC 083 F Bichrome Tree - 組合數學 - 基環樹
題目大意:平面直角座標系上有2n個點,x軸上(1~n,0)有n個bot,y軸同理。啟動x軸上的bot會向上走,y軸上的會向右走,走到第一個小球並和小球發生湮滅。問(2n)!種啟動順序中有多少方案能使小球全部湮滅。 題解: 考慮二分圖,每個小球對應X連Y的一條邊。 那麼如果先不考慮順序,考慮分
HDU 6370 Werewolf 思維,基環樹.
題意:村民只會說真話,狼可能說假話. (i,j,k)表示第i個人說第j個人是k(k=村民或者狼)[i=1..n].i!=j. n<=1e5.總共有2^n種情景(有些可能非法.). 問有多少人一定為村民,以及有多少人一定為狼? 因為狼可以將真話也可以講假話. 假如n個人全部為狼,
nssl1270-創世紀【樹形dp,基環樹】
正題 題目大意 每個物品有一個可以限制的物品,要求一個集合內所有的物品都有一個不在集合內物品限制。求這個集合可以保護的最多物品 解題思路 類似沒有上司的舞會 其實就是在基環樹森林,我們可以利用二次樹形dp的方法。 先找到環,然後強行將環斷開進行一次dp,然後強
洛谷P2607 [ZJOI2008]騎士 基環樹動歸
Code: #include<algorithm> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typ
洛谷2607 騎士(基環樹+樹形DP)
傳送門 【題目分析】 第一眼:咦這不簡單樹形DP嗎? 第二眼:嗯?這不是有N條邊嗎?怎麼就樹形DP了? 第三眼:唉好像拆一條邊不就N-1條邊了嗎?哎嘿嘿我太聰明瞭。。。。 噼裡啪啦打完一交,WA完。。。。。。。一臉懵???才發現可能直接將整個圖(以為保證連通)拆成兩個聯通塊了。。
[CF1027F]Session in BSU[最小基環樹森林]
題意 有 \(n\) 門課程,每門課程可以選擇在 \(a_i\) 或者 \(b_i\) 天參加考試,每天最多考一門,問最早什麼時候考完所有課程。 \(n\leq 10^6\)。 分析 類似 [BZOJ4883]棋盤上的守衛 一題。 將每門課程對應的兩天連邊,如果課程 \(i\) 要在第 \(
[BZOJ4883][Lydsy1705月賽]棋盤上的守衛[最小基環樹森林]
題意 有一大小為 \(n*m\) 的棋盤,要在一些位置放置一些守衛,每個守衛只能保護當前行列之一,同時在每個格子放置守衛有一個代價 \(w\) ,問要使得所有格子都能夠被保護,需要最少多少的代價。 \(2\leq n,m\leq 10^5\ ,n*m\leq 10^5\) 分析 將行列看成 \(
noip 2018 day2 T1 旅行 基環樹 tarjan
Code: #include<cstdio> #include<cstring> #include<string> #include<stack> #include<algorithm> #include<vector> usin
【BZOJ】2878: [Noi2012]迷失遊樂園-基環樹期望DP
傳送門:bzoj2878 題解 討論比較繁瑣: 先求出每個點向下走的期望 g i