POJ 1847 Tram 最小費用流

2021-06-16 06:37:59 字數 851 閱讀 1694

題意:

給你n個點,告訴你每個點u可以到達的點v,但是可以到達的點又分兩類:一類可以直接到達;另一類要經過一次「轉換」後可以到達。現在問你點a到點b至少要「轉換」幾次能到達。如果a不能到b則輸出「-1」,否則輸出要「轉換」的最少次數。

思路:最小費用最大流

建圖:(1):每個點向他可以到的第乙個點連,和他可以到達的其餘點連

(2):scr向a連<1,0>

(3):b向sink連<1,0>

(4):然後從scr向sink找增廣路

(5):找到則輸出dis[sink];否則輸出-1

code:

/*最小費用最大流*/

/*建圖:

(1):每個點向他可以到的第乙個點連,和他可以到達的其餘點連(2):scr向a連<1,0>

(3):b向sink連<1,0>

(4):然後從scr向sink找增廣路

(5):找到則輸出dis[sink];否則輸出-1

*//*ac**:16ms*/

#include #include #include #include #include #define maxn 105

#define inf 1e8

#define max(a,b) (a>b?a:b)

#define min(a,b) (aq;

bool spfa(int s,int t,int n)

}} }

if(dis[t]!=inf) return true;

return false;

}void solve()

int main()

return 0;

}

POJ 1847 Tram 單源最短路徑

題意 軌道網,有若干轉換器,每個轉換器都和其他若干轉換器相連,轉換器初始指向第乙個與其相連的轉換器。問要到達終點需要最少轉換多少次?思路 可以用dijkstra單源最短路來做,把軌道網看做有向圖 因為1第乙個指向2,2的第乙個不一定指向1 當前轉換器處始指向的那個轉換器之間的路徑權值為0,其他路徑權...

POJ2195 Going home 最小費用流

建立源點s,匯點t,s與每個人之間建邊,費用為0,容量為1,每個房子與t建邊,費用為0容量為1,每個人與每個房子之間建邊,費用為人到達房子的距離,容量為1,則該題轉化為求最小費用流問題。include include include include define max 1 31 1 define ...

poj 3680(最小費用流)

傳送門 問題 數軸上有若干個帶權值的閉區間 劉汝佳藍書p367寫的是左閉右開區間,個人根據樣例資料和解法推測應該是筆誤 選出一些區間使權值和盡量大且任意乙個數均被覆蓋k次 題解 經典的最小費用流模型,連邊方法寫在 開頭,具體為什麼要這樣連邊本蒟蒻也不易表述清楚,但是在紙上模擬幾組資料發現確實是對的,...