ACM經典問題 佈線問題 三

2021-09-30 10:26:35 字數 1312 閱讀 1810

印刷電路板將佈線區域劃分成 n×m 個方格陣列,要求確定連線方格陣列中的方格a 點到方格b 的最短佈線方案。在佈線時,電路只能沿直線佈線,為了避免線路相交,已佈了線的方格做了封鎖標記,其他線路不允許穿過被封鎖的方格。問線路至少穿過幾個方格。

輸入的第一行是兩個整數 n 和m(2<=n<=100,2<=m<=100),表示陣列的範圍,以及被封鎖的方格。接下來有k 行,每行兩個整數x 和y。表示被封鎖的方格(1<=x<=n,1<=y<=m)。再接下來是四個整數x1 , y1 , x2 , y2 表示起點a 的座標和起點b 的座標。

輸出最短的佈線方案的長度,若不存在,則輸出-1。

7 7 14

1 32 3

2 43 5

4 44 5

5 15 5

6 16 2

6 37 1

7 27 3

3 2 4 6

輸出樣例

10用佇列式分支限界法來考慮佈線問題。佈線問題的解空間是乙個圖,則從起始位置 a開始將它作為第乙個擴充套件結點。與該擴充套件結點相鄰並可達的方格成為可行結點被加入到活結

點佇列中,並且將這些方格標記為1,即從起始方格a 到這些方格的距離為1。接著,從活結點佇列中取出隊首結點作為下乙個擴充套件結點,並將與當前擴充套件結點相鄰且未標記過的方格標記為2,並存入活結點佇列。這個過程一直繼續到演算法搜尋到目標方格b 或活結點隊列為空時為止。

#include#include#include#includeusing namespace std ;

struct point ;

queueq ; //用以存放擴充套件節點的佇列

NYOJ佈線問題

描述 南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件 1 把所有的樓都供上電。2 所用電線花費最少 輸入 第一行是乙個整數n表示有n組測試資料。n 5 每組測試資料的第一行是兩個整數v,e.v表示學校裡樓的總個數 v 500 隨後的e行裡,每行有三個...

最優佈線問題

time limit 1000ms memory limit 65536k 有疑問?點這裡 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們中間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資...

最優佈線問題

最優佈線問題 time limit 10000ms memory limit 65536k total submit 116 accepted 95 case time limit 1000ms description 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線...