[BZOJ]1023: [SHOI2008]cactus仙人掌圖

Time Limit: 1 Sec??Memory Limit: 162 MB

Description

  如果某個無向連通圖的任意一條邊至多只出現在一條簡單回路(simple cycle)里,我們就稱這張圖為仙人掌圖(cactus)。所謂簡單回路就是指在圖上不重復經過任何一個頂點的回路。

?

  舉例來說,上面的第一個例子是一張仙人圖,而第二個不是——注意到它有三條簡單回路:(4,3,2,1,6,5,4)、(7,8,9,10,2,3,7)以及(4,3,7,8,9,10,2,1,6,5,4),而(2,3)同時出現在前兩個的簡單回路里。另外,第三張圖也不是仙人圖,因為它并不是連通圖。顯然,仙人圖上的每條邊,或者是這張仙人圖的橋(bridge),或者在且僅在一個簡單回路里,兩者必居其一。定義在圖上兩點之間的距離為這兩點之間最短路徑的距離。定義一個圖的直徑為這張圖相距最遠的兩個點的距離。現在我們假定仙人圖的每條邊的權值都是1,你的任務是求出給定的仙人圖的直徑。

Input

  輸入的第一行包括兩個整數n和m(1≤n≤50000以及0≤m≤10000)。其中n代表頂點個數,我們約定圖中的頂點將從1到n編號。接下來一共有m行。代表m條路徑。每行的開始有一個整數k(2≤k≤1000),代表在這條路徑上的頂點個數。接下來是k個1到n之間的整數,分別對應了一個頂點,相鄰的頂點表示存在一條連接這兩個頂點的邊。一條路徑上可能通過一個頂點好幾次,比如對于第一個樣例,第一條路徑從3經過8,又從8返回到了3,但是我們保證所有的邊都會出現在某條路徑上,而且不會重復出現在兩條路徑上,或者在一條路徑上出現兩次。

Output

  只需輸出一個數,這個數表示仙人圖的直徑長度。

Sample Input

 (樣例1)

  15 3
  9 1 2 3 4 5 6 7 8 3
  7 2 9 10 11 12 13 10
  5 2 14 9 15 10
 (樣例2)
  10 1
  10 1 2 3 4 5 6 7 8 9 10

Sample Output

 (樣例1)

  8
 (樣例2)
  9

HINT

  對第一個樣例的說明:如圖,6號點和12號點的最短路徑長度為8,所以這張圖的直徑為8。

?

【注意】使用Pascal語言的選手請注意:你的程序在處理大數據的時候可能會出現棧溢出。如果需要調整棧空間的大小,可以在程序的開頭填加一句:{$M 5000000},其中5000000即指代棧空間的大小,請根據自己的程序選擇適當的數值。

Solution

  對仙人掌做一次dfs得到一棵dfs樹,用f[i]表示i到子樹中的點的最長距離,對于橋,我們直接更新f[i]=max(f[j]+1),并更新答案;對于環上的邊,我們對每個環都統計一次答案并把信息匯總到環中深度最小的點上,匯總信息比較容易,考慮如何在環內統計答案,先把環拆成鏈,復制一份接在后面,然后對每個點i統計點i在環上向前的環大小一半的個數的點,即ans=max(f[i]+f[j]+dis(i,j))(dis(i,j)<=環的大小/2),這樣就可以用單調隊列可以維護,總復雜度O(n)。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
inline int read()
{int x;char c;while((c=getchar())<'0'||c>'9');for(x=c-'0';(c=getchar())>='0'&&c<='9';)x=(x<<3)+(x<<1)+c-'0';return x;
}
#define MN 50000
struct edge{int nx,t;}e[MN*4+5];
int h[MN+5],en,d[MN+5],l[MN+5],cnt,fa[MN+5],f[MN+5],ans,a[MN*2+5],an,q[MN*2+5],ql,qr;
inline void ins(int x,int y)
{e[++en]=(edge){h[x],y};h[x]=en;e[++en]=(edge){h[y],x};h[y]=en;
}
void tj(int x)
{int i,j;d[x]=l[x]=++cnt;for(i=h[x];i;i=e[i].nx)if(e[i].t!=fa[x]){if(!d[e[i].t])fa[e[i].t]=x,tj(e[i].t);l[x]=min(l[x],l[e[i].t]);if(l[e[i].t]>d[x])ans=max(ans,f[x]+f[e[i].t]+1),f[x]=max(f[x],f[e[i].t]+1);}for(i=h[x];i;i=e[i].nx)if(fa[e[i].t]!=x&&d[e[i].t]>d[x]){for(an=0,j=e[i].t;j!=x;j=fa[j])a[++an]=f[j];a[++an]=f[x];for(j=1;j<=an;++j)a[j+an]=a[j];for(j=ql=1,qr=0;j<=an<<1;++j){while(ql<=qr&&j-q[ql]>an>>1)++ql;if(ql<=qr)ans=max(ans,a[j]+a[q[ql]]+j-q[ql]);while(ql<=qr&&a[j]-j>=a[q[qr]]-q[qr])--qr;q[++qr]=j;}for(j=1;j<an;++j)f[x]=max(f[x],a[j]+min(an-j,j));}
}
int main()
{int n,m,k,x,y;n=read();m=read();while(m--)for(k=read(),x=read();--k;x=y)ins(x,y=read());tj(1);printf("%d",ans);
}

轉載于:https://www.cnblogs.com/ditoly/p/BZOJ1023.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254907.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254907.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254907.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實現RTP協議的H.264視頻傳輸系統

1. 引言 隨著信息產業的發展&#xff0c;人們對信息資源的要求已經逐漸由文字和圖片過渡到音頻和視頻&#xff0c;并越來越強調獲取資源的實時性和互動性。但人們又面臨著另外一種不可避免的尷尬&#xff0c;就是在網絡上看到生動清晰的媒體演示的同時&#xff0c;不得…

機器人網首頁應用實例工業自動化 EtherCAT 技術在庫卡機器人控制系統上的應用

自 2010 年以來&#xff0c;庫卡一直采用 EtherCAT 技術作為所有庫卡機器人控制系統中的系統總線。最新的 KR AGILUS 機器人和 LBR iiwa 輕型機器人的緊湊型控制器也是在 EtherCAT 基礎上實施的。Beckhoff 基于工業以太網的 EtherCAT因而可以作為整個當前庫卡控制系統范圍內的…

KVM虛擬機共享存儲動態遷移與冷遷移

運行環境一、 配置nfs共享服務器二、 配置KVM虛擬化三、 創建橋接網卡四、 配置kvm服務器并實現動態遷移五、 配置冷遷移運行環境KVM虛擬機兩臺&#xff08;linux 7.4&#xff09;IP地址&#xff1a;192.168.80.100&#xff08;KVM01&#xff09;IP地址&#xff1a;192.168.80.…

HALCON示例程序surface_scratch.hdev提取劃痕

小哥哥小姐姐覺得有用點個贊唄&#xff01; HALCON示例程序surface_scratch.hdev提取劃痕 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () read_image (Image, ‘surface_scratch’) get_image_size (Image, Width…

MySQL--SQL中的安全問題

---恢復內容開始--- 1) SQL 注入簡介 SQL 注入(SQL Injection) 就是利用某些數據庫的外部接口將用戶數據插入到實際的數據庫操作語言(SQL)當中&#xff0c;從而達到入侵數據庫乃至操作系統的目的。他的產生主要是由程序對用戶輸入的數據沒有進行嚴格的過濾&#xff0c;導致非法…

伺服驅動器的 三環控制 電流環 速度環 位置環

運動伺服一般都是三環控制系統&#xff0c;從內到外依次是電流環速度環位置環。 1、電流環&#xff1a;電流環的輸入是速度環PID調節后的那個輸出&#xff0c;我們稱為“電流環給定”吧&#xff0c;然后呢就是電流環的這個給定和“電流環的反饋”值進行比較后的差值在電流環內做…

理解LSTM/RNN中的Attention機制

轉自&#xff1a;http://www.jeyzhang.com/understand-attention-in-rnn.html&#xff0c;感謝分享&#xff01; 導讀 目前采用編碼器-解碼器 (Encode-Decode) 結構的模型非常熱門&#xff0c;是因為它在許多領域較其他的傳統模型方法都取得了更好的結果。這種結構的模型通常將…

linux下基于jrtplib庫的實時傳送實現

linux 下基于jrtplib庫的實時傳送實現一、RTP 是進行實時流媒體傳輸的標準協議和關鍵技術實時傳輸協議&#xff08;Real-time Transport Protocol&#xff0c;PRT&#xff09;是在 Internet 上處理多媒體數據流的一種網絡協議&#xff0c;利用它能夠在一對一&#xff08;unicas…

[BZOJ2326] [HNOI2011] 數學作業 (矩陣乘法)

Description Input Output Sample Input Sample Output HINT Source Solution 遞推式長這樣&#xff1a;$f[n]f[n-1]*10^kn$ 對于每一段位數個數相同的$n$&#xff08;如$10\sim99,100\sim999,23333\sim66666,1018701389\sim2147483647$&#xff09;&#xff0c;$k$是個定值 然…

HALCON示例程序texture.hdev檢測樹木

小哥哥小姐姐覺得有用點個贊唄&#xff01; HALCON示例程序texture.hdev檢測樹木 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_close_window () Interactive : 0 dev_close_window () read_image (MreutHill, ‘mreut_y’) get_image_size (MreutH…

1、python基礎速成

基礎模塊 def prt(age,name):#函數定義 print("%s is %d 年齡 old"%(name,age)) if __name__"__main__":#程序入口 print("Hello World") prt(45,"gaici") 獲取輸入&#xff1a;使用input()函數 nameinput("you name &#x…

老男孩博客園楊海潮MySQL--MySQL機構邏輯2

轉載于:https://blog.51cto.com/yanfeilai528/2103403

法國標致雪鐵龍汽車公司采用通快碟片激光器進行焊接

發布日期&#xff1a;2011-10-14 來源&#xff1a;光電新聞網 發布人&#xff1a;星之球科技 摘要&#xff1a;3月11日消息&#xff0c;十一個碟片激光器&#xff08;disk laser&#xff09;將安裝在標致雪鐵龍集團的工廠&#xff0c;這家法國汽車制造商準備使用4千瓦的激光器…

h.264 rtp打包

(2011-05-27 08:44:13) 轉載標簽&#xff1a; 雜談 payload,H.264 RTP payload 格式 on 2011-2-18 in 博文摘選 | 0 Comment 1. 網絡抽象層單元類型 (NALU) NALU 頭由一個字節組成, 它的語法如下: --------------- |0|1|2|3|4|5|6|7| -------- |F|NRI| Type | --------------…

jquery live hover綁定方法

$(".select_item span").live({mouseenter:function(){$(this).addClass("hover");},mouseleave:function(){$(this).removeClass("hover");} }); 注意&#xff1a;jquery1.9以上版本不支持live&#xff0c;新方法為on 轉載于:https://www.cnblo…

HALCON示例程序vessel.hdev血管的分割與測量

小哥哥小姐姐覺得有用點個贊唄&#xff01; HALCON示例程序vessel.hdev血管的分割與測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_window (‘off’) dev_close_window () dev_open_window (0, 0, 512, 512, ‘black’, WindowID) set_d…

電子凸輪

CAM功能是按照一種人為預先設定的曲線關系(可以在線修改,對SEW的變頻/伺服控制器而言)來運動的控制應用。 100%速度前饋的位置控制這個觀點偶不敢茍同.典型的一些應用。比如:全自動包裝機械上,移動鋸,其實大家說的電子齒輪&#xff0c;指的就是一種可以調節主從速度比的同步應用…

浙南聯合訓練賽20180414

這次題目的代碼都不長&#xff0c;CF的一貫風格 A - Game CodeForces - 513A Two players play a simple game. Each player is provided with a box with balls. First players box contains exactly n1 balls and second players box contains exactly n2balls. In one move…

原生JS實現蘋果菜單

今天分享下用原生JS實現蘋果菜單效果&#xff0c;這個效果的重點有以下幾點 圖標中心點到鼠標的距離的算法 利用比例計算圖標的寬度 代碼地址&#xff1a;https://github.com/peng666/blogs/blob/gh-pages/menus/index.html 在線測試地址&#xff1a;http://peng666.github.io/…

Gym 100090D Insomnia

從 n 變到 1&#xff0c;有多少種方案&#xff1f; 打表記憶化。 1 #include <bits/stdc.h>2 3 using namespace std;4 5 int n;6 int dp[1000005];7 int dfs(int n) {8 if(n1)9 return 1; 10 if(dp[n]>0) 11 return dp[n]; 12 int cnt0;…