在通訊領域,為了保證訊號不中斷,經常需要為業務準備一條工作路由和一條保護路由。要求工作路由和保護路由沒有交點,否則,相交點故障時,整個業務中斷了。
在full mesh網路中,很容易找到滿足上面要求的兩條路由。演算法如下:
1、先用最短路演算法生成工作路由
2、從圖中去掉工作路由經過的節點
3、再用最短路演算法生成保護路由
問題來了,當上面演算法宣告失敗時,並不等於問題無解。
改進的演算法:
1、先用最短路演算法生成一條路由p
2、對圖進行一些修改後,生成第二條路由q。修改圖的目的是使p和q僅可能少地相交,給p經過的節點設定乙個很大的費用,比預期最長的路徑還大,但遠小於無窮大。如果p和q不相交,p和q就是問題的解。
3、找到p和q的所有交點,從圖中去掉這些交點,再生成第三條路由r。
4、將p、q、r畫到紙上,會得到乙個狹長的葉子,葉子的兩個邊緣就是問題的解。
該演算法已實現,測試效果不錯
Subway Lines(樹上兩條路的交點數)
原題 題意 給出一棵樹,n節點,每次詢問給兩對葉子,求這兩對葉子產生路徑的交集 解析 找被走過兩次的點 走被走過兩次的所有lca,lca所構成的那一段長度就是點的數量 顯然,目標線段的端點一定是這些葉子節點的某個lca 找到所有lca,放入set 統計哪些lca被走過兩次 怎麼判斷走過幾次 一對葉子...
計算兩點間的距離
problem description 輸入兩點座標 x1,y1 x2,y2 計算並輸出兩點間的距離。input 輸入資料有多組,每組佔一行,由4個實數組成,分別表示x1,y1,x2,y2,資料之間用空格隔開。output 對於每組輸入資料,輸出一行,結果保留兩位小數。sample input 0 ...
計算兩點間的距離
三 展示 本題計算兩個座標之間的距離,運用了數學公式勾股定理,a2 b2 c2其中b與c為直角邊,a為斜邊,及兩點之間的距離。problem description 輸入兩點座標 x1,y1 x2,y2 計算並輸出兩點間的距離。input 輸入資料有多組,每組佔一行,由4個實數組成,分別表示x1,y...