3931 CQOI2015 網路吞吐量

2021-07-25 15:45:29 字數 2168 閱讀 8345

time limit: 10 sec  

memory limit: 512 mb

submit: 1536  

solved: 628 [

submit][

status][

discuss]

路由是指通過計算機網路把資訊從源位址傳輸到目的位址的活動,也是計算機網路設計中的重點和難點。網路中實現路由**的硬體裝置稱為路由器。為了使資料報最快的到達目的地,路由器需要選擇最優的路徑**資料報。例如在常用的路由演算法ospf(開放式最短路徑優先)中,路由器會使用經典的dijkstra演算法計算最短路徑,然後盡量沿最短路徑**資料報。現在,若已知乙個計算機網路中各路由器間的連線情況,以及各個路由器的最大吞吐量(即每秒能**的資料報數量),假設所有資料報一定沿最短路徑**,試計算從路由器1到路由器n的網路的最大吞吐量。計算中忽略**及傳輸的時間開銷,不考慮鏈路的頻寬限制,即認為資料報可以瞬間通過網路。路由器1到路由器n作為起點和終點,自身的吞吐量不用考慮,網路上也不存在將1和n直接相連的鏈路。

輸入檔案第一行包含兩個空格分開的正整數n和m,分別表示路由器數量和鏈路的數量。網路中的路由器使用1到n編號。接下來m行,每行包含三個空格分開的正整數a、b和d,表示從路由器a到路由器b存在一條距離為d的雙向鏈路。 接下來n行,每行包含乙個正整數c,分別給出每乙個路由器的吞吐量。

輸出乙個整數,為題目所求吞吐量。

7 10

1 2 2

1 5 2

2 4 1

2 3 3

3 7 1

4 5 4

4 3 1

4 6 1

5 6 2

6 7 1

1100

2050

2060170

對於100%的資料,n≤500,m≤100000,d,c≤10^9 [

submit][

status][

discuss]

運輸最多物品顯然是個最大流啊,每個點拆成兩個點,中間連一條容量為該點容量的邊就是了

原圖中的邊只保留最短路圖上的邊

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int maxn = 1010;

const int maxm = 4e5 + 20;

typedef long long ll;

const ll inf = 1e16;

const int inf = ~0u>>1;

struct e

e(int to,int cap,int flow): to(to),cap(cap),flow(flow){}

}edgs[maxm];

struct data

data(int to,int w): to(to),w(w){}

};int n,m,tot,cnt,s,t,a[maxn],b[maxn],l[maxn],cur[maxn];

ll dis[maxn];

bool vis[maxn];

vector v[maxn];

vector g[maxn];

queue q;

void add(int x,int y,int cap)

bool bfs()

} return l[t];

}ll dinic(int x,ll a)

if (!flow) l[x] = -1;

return flow;

}int main()

for (int i = 2; i <= n; i++) dis[i] = inf; q.push(1);

while (!q.empty())

}} for (int i = 2; i < n; i++) a[i] = ++tot,b[i] = ++tot;

b[1] = s; a[n] = t = ++tot;

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

} ll maxflow = 0;

while (bfs())

cout << maxflow;

return 0;

}

BZOJ P3931 CQOI2015 網路吞吐量

先跑一遍最短路 把最短路上的點建乙個圖,然後需要拆點,因為權值在點上面 然後拆點限制流量 最後跑一邊最大流就可以了 include include include include includeusing namespace std int head 100003 exhead 100003 q 4...

3931 CQOI2015 網路吞吐量

題目鏈結 題目大意 求最短路樹上的最大流 題解 定義最短路樹如下 從源點1經過邊集t到任意一點i有且僅有一條路徑,且這條路徑是整個圖1到i的最短路徑,邊集t構成最短路樹。然後建圖就好了 我的收穫 最短路樹的應用 include include include include include usin...

CQOI2015 網路吞吐量

路由是指通過計算機網路把資訊從源位址傳輸到目的位址的活動,也是計算機網路設計中的重點和難點。網路中實現路由 的硬體裝置稱為路由器。為了使資料報最快的到達目的地,路由器需要選擇最優的路徑 資料報。例如在常用的路由演算法ospf 開放式最短路徑優先 中,路由器會使用經典的dijkstra演算法計算最短路...