CQOI2015 網路吞吐量(網路流 SPFA)

2022-04-30 09:51:14 字數 2074 閱讀 4056

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

輸入輸出格式

輸入格式:

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

輸出格式:

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

輸入樣例#1:

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

2060

1輸出樣例#1:

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

一道比較鬼的題目,很容易出兮兮,題目描述的有些不太清楚吧。

這道題是會有重邊的,陣列開小了會出現莫名其妙的錯誤。

那麼進入正題吧。

這道題目大致思路還是很容易看出來,最短路,然後通過在最短路的邊上跑最大流。

考慮如何建邊,首先可選的邊可這樣判斷

dis[x]+v==dis[y](v表示邊權)

然後這裡網路流建圖的話,因為限制在點權上面,所以我們運用經典的拆點思想把乙個點拆成兩個點建邊,跑一遍網路流即可。

注意long long

#include#include#include#include#include#define lll long long

using namespace std;

lll read()

while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();

return x*w;

}lll n,m,cnt,inf=(1ll<<40),s,t;

lll head[1010],a[510],x[100010],y[100010],z[100010];

struct nodeedge[400010];

void add(lll p,lll q,lll w)

lll vis[510],team[200010],dis[510];

void spfa();

lll deep[1010];

bool bfs();

lll dfs(lll,lll);

int main()

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

a[1]=inf;a[n]=inf;

spfa();

cnt=1;

memset(head,0,sizeof(head));

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

for(lll i=1;i<=m;i++)

else if(dis[y[i]]+z[i]==dis[x[i]])

}lll d=0,ans=0;

while(bfs())}}

}}bool bfs()}}

if(d==0) deep[k]=0;return 0;

}

CQOI2015 網路吞吐量

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

CQOI2015 網路吞吐量 最大流板題

不開longlong 毀一生。luogu傳送門 首先先跑乙個最短路上的所有最短路徑,然後加入圖中跑一次最大流就可以,還是比較裸的一道題。if dis x len y dis y 則這條路在最短路上。然後看每個點的吞吐量限制,我們將每個路由器拆成兩個點來考慮,從乙個點到這個點的映象結點的容量為其限制就...

3931 CQOI2015 網路吞吐量

time limit 10 sec memory limit 512 mb submit 1536 solved 628 submit status discuss 路由是指通過計算機網路把資訊從源位址傳輸到目的位址的活動,也是計算機網路設計中的重點和難點。網路中實現路由 的硬體裝置稱為路由器。為了...