題目描述
路由是指通過計算機網路把資訊從源位址傳輸到目的位址的活動,也是計算機網路設計中的重點和難點。網路中實現路由**的硬體裝置稱為路由器。為了使資料報最快的到達目的地,路由器需要選擇最優的路徑**資料報。例如在常用的路由演算法ospf(開放式最短路徑優先)中,路由器會使用經典的dijkstra演算法計算最短路徑,然後盡量沿最短路徑**資料報。現在,若已知乙個計算機網路中各路由器間的連線情況,以及各個路由器的最大吞吐量(即每秒能**的資料報數量),假設所有資料報一定沿最短路徑**,試計算從路由器1到路由器n的網路的最大吞吐量。計算中忽略**及傳輸的時間開銷,不考慮鏈路的頻寬限制,即認為資料報可以瞬間通過網路。路由器1到路由器n作為起點和終點,自身的吞吐量不用考慮,網路上也不存在將1和n直接相連的鏈路。
輸入格式
輸入檔案第一行包含兩個空格分開的正整數n和m,分別表示路由器數量和鏈路的數量。網路中的路由器使用1到n編號。接下來m行,每行包含三個空格分開的正整數a、b和d,表示從路由器a到路由器b存在一條距離為d的雙向鏈路。 接下來n行,每行包含乙個正整數c,分別給出每乙個路由器的吞吐量。
輸出格式
輸出乙個整數,為題目所求吞吐量。
題解:根據題意,因為每次都要走最短路,所以我們把所有最短路上的邊建圖然後跑網路流即可
ac**:
#pragma gcc optimize(2)
#include
#include
using
namespace std;
using
namespace __gnu_cxx;
#define int long long
#define pii pair
#define mp(a,b) make_pair(a,b)
const
int maxn =
2e5+50;
const
int maxm =
2e5+50;
const
int mod =
1e9+7;
const
int inf =
0x3f3f3f3f
;int n,m,s,t,tot=
1,head[maxn]
,nxt[maxm]
,to[maxm]
,w[maxn]
,h[maxn]
;int a[maxn]
,b[maxn]
,c[maxn]
,g[505][
505]
;inline
void
ade(
int u,
int v,
int ww)
inline
void
add(
int u,
int v,
int w)
inline
intbfs()
}}return h[t];}
inline
intdfs
(int x,
int f)}if
(!fl) h[x]=-
1;return fl;
}inline
intdinic()
inline
void
floyd()
signed
main()
floyd()
; s=
1+n,t=n;
for(
int i=
1,x;i<=n;i++
)scanf
("%lld"
,&x)
,add
(i,i+n,
((i==
1|| i==n)
? inf:x));
for(
int i=
1;i<=m;i++
)printf
("%lld\n"
,dinic()
);return0;
}
洛谷 P3171 CQOI2015 網路吞吐量
題目描述 路由是指通過計算機網路把資訊從源位址傳輸到目的位址的活動,也是計算機網路設計中的重點和難點。網路中實現路由 的硬體裝置稱為路由器。為了使資料報最快的到達目的地,路由器需要選擇最優的路徑 資料報。例如在常用的路由演算法ospf 開放式最短路徑優先 中,路由器會使用經典的dijkstra演算法...
BZOJ P3931 CQOI2015 網路吞吐量
先跑一遍最短路 把最短路上的點建乙個圖,然後需要拆點,因為權值在點上面 然後拆點限制流量 最後跑一邊最大流就可以了 include include include include includeusing namespace std int head 100003 exhead 100003 q 4...
CQOI2015 網路吞吐量
路由是指通過計算機網路把資訊從源位址傳輸到目的位址的活動,也是計算機網路設計中的重點和難點。網路中實現路由 的硬體裝置稱為路由器。為了使資料報最快的到達目的地,路由器需要選擇最優的路徑 資料報。例如在常用的路由演算法ospf 開放式最短路徑優先 中,路由器會使用經典的dijkstra演算法計算最短路...