最小密度路徑 洛谷p1730

2021-08-29 15:46:14 字數 1001 閱讀 5484

給出一張有n個點m條邊的加權有向無環圖,接下來有q個詢問,每個詢問包括2個節點x和y,要求算出從x到y的一條路徑,使得密度最小(密度的定義為,路徑上邊的權值和除以邊的數量)。

輸入格式:

第一行包括2個整數n和m。

以下m行,每行三個數字a、b、w,表示從a到b有一條權值為w的有向邊。

再下一行有乙個整數q。

以下q行,每行乙個詢問x和y,如題意所訴。

輸出格式:

對於每個詢問輸出一行,表示該詢問的最小密度路徑的密度(保留3位小數),如果不存在這麼一條路徑輸出「omg!」(不含引號)。

輸入樣例#1:複製

3 3

1 3 5

2 1 6

2 3 6

21 3

2 3

輸出樣例#1:複製

5.000

5.500

1 ≤ n ≤ 50,1 ≤ m ≤ 1000,1 ≤ w ≤ 100000,1 ≤ q ≤ 100000

f[i][j][h]=min(f[i][[k][1]+f[k][j][h-1]),表示從i到j經過h條路徑的最短路,轉移時列舉斷點k,強制使k表示路徑上離i最近的點。

#include#define f(i,l,r) for(i=(l);i<=(r);i++)

using namespace std;

const int maxn=55,inf=1000000000;

int dis[maxn][maxn][1005];

int n,m,q;

int main()

f(t,2,m)

}} }

cin>>q;

f(i,1,q)

if(ans==inf) cout<<"omg!"

}

洛谷P1730 最小密度路徑

題目大意 給定乙個 n 個點,m 條邊的有向圖,現有 q 個詢問,每次詢問 x 到 y 的最小密度路徑是多少。最小密度路徑的定義是路徑長度除以路徑邊數。題解 利用矩陣乘法,可以預處理出從 x 到 y 恰好經過 k 條邊的最短路是多少。對於每次詢問,直接處理處理即可,時間複雜度為 o n 4 注意 恰...

洛谷P1730 最小密度路徑 Floyd

時空限制 1000ms 128mb 題目描述 給出一張有n個點m條邊的加權有向無環圖,接下來有q個詢問,每個詢問包括2個節點x和y,要求算出從x到y的一條路徑,使得密度最小 密度的定義為,路徑上邊的權值和除以邊的數量 輸入格式 第一行包括2個整數n和m。以下m行,每行三個數字a b w,表示從a到b...

P1730 最小密度路徑 floyed

給出一張有n個點m條邊的加權有向無環圖,接下來有q個詢問,每個詢問包括2個節點x和y,要求算出從x到y的一條路徑,使得密度最小 密度的定義為,路徑上邊的權值和除以邊的數量 輸入格式 第一行包括2個整數n和m。以下m行,每行三個數字a b w,表示從a到b有一條權值為w的有向邊。再下一行有乙個整數q。...