poj 2570 關於floyd的新思考

2022-08-27 15:21:09 字數 894 閱讀 2332

刷圖論的艱難歷程開始了,這是隨便一翻看到的例題,剛開始沒有一點思路,但一點點順著書看下去,發現這道題的背後,是對於floyd的新思考。就如同看到傳遞閉包所使用的warshall演算法的驚訝,這一題著實讓我覺得驚豔了一把。不廢話,這題是說,鋪設網路,網路中的一些節點是有一部分運營商運營的,然後,給你兩個節點,讓你求能夠提供這兩個節點間服務的運營商,沒有的話輸出「-」。首先,把提供這些服務的運營商的代號,轉換為對應字典序的位,然後,通過』|『運算把它併入乙個集合之中,並不斷求它們連通的交並將之併入集合,可得如下遞推式:

map[i][j] |= map[i][k]&map[k][j];

由此,該題得解。

**如下:

#include #include 

#include

#include

using

namespace

std;

const

int maxn = 210

;char str[30

];int

map[maxn][maxn];

intmain()

for(k = 1; k <= n ; k ++)

for(i = 1; i <= n; i ++)

for(j = 1; j <= n; j ++)

map[i][j] |= map[i][k] &map[k][j];

while(scanf("

%d%d

",&x,&y) && x &&y)

}if(flag) putchar('\n'

);

else printf("

-\n"

); }

}return0;

}

poj 2570經典二進位制floyd

floyd 位運算 題目大意 有若干家公司,他們分別在若干個城市的路由器間鋪設了自己的光纖,現在問,如果要從路由器a到路由器b傳送資料,能否只使用一家公司的光纖而達到目的,如能則分別輸出這些公司的代號。思路 雖然不是最短路,卻可以用每對頂點的最短路徑 floyd warshell 演算法來求解。di...

POJ2570 二進位制,位運算,Floyd

題意 給你乙個有向圖,兩點之間有多種連線方式,然後每次詢問都問你點a,b之間有哪些方式可以到達,每個小字母是乙個方式.思路 很巧妙的位運算和floyd應用,借助floyd的更新過程,去更新任意兩組邊組合起來的長邊,如 map i j 是由 map i k 和 map k j 接起來的,更新方式很容易...

Floyd演算法的應用 POJ 2240

該題大意是套匯問題,貨幣根據匯率轉換來套取多餘的錢數,由於是各個貨幣兩兩轉換,即由floyd判環應用變形則可解決問題。floyd演算法用於解決任意兩個節點之間的最短距離,判斷是否成環等,其實質為動態規劃。1 floyd演算法的應用 2 include 3 include 4 include 5usi...