BZOJ2763 JLOI2011 飛行路線

2022-05-19 21:57:57 字數 1007 閱讀 6029

給出n個點(編號為0~n-1),m條雙向邊,每條邊都有權值,每經過邊都要花該邊的權值的費用,但是可以免費走k條邊,求出從起點到終點的最少花費

spfa,但要在list中新增乙個變數為c,表示使用了多少次免費的機會,然後用二維陣列f來記錄答案,f[i][j]表示到第i個點用j次免費機會的最少費用

#include#include

#include

#include

#include

using

namespace

std;

struct

node

a[110000];int len,last[51000

];void ins(int x,int y,int

d)int f[110000][11

];bool v[110000][11

];int n,m,kk;int

st,ed;

int list[110000][2

];void

spfa()

}if(f[x][c]1]&&c}

}head++;if(head==100000+1) head=1

; v[x][c]=false

; }

}int

main()

for(int i=0;i<=n;i++) for(int j=0;j<=kk;j++) f[i][j]=999999999

; memset(v,

false,sizeof(v));v[st][0]=true

; f[st][

0]=0

; spfa();

int mmin=999999999

;

for(int i=0;i<=kk;i++) mmin=min(f[ed][i],mmin);

printf(

"%d\n

",mmin);

return0;

}

bzoj 2763 JLOI2011 飛行路線

本題我用的二維spfa,dis i j 表示到i點用掉了j次免費機會的最優值,相當於動態規劃,由於資料十分大,普通spfa會t掉3個點,所以考慮堆優化 相信堆優化大家都懂,所以這些提示就夠了 include include includeusing namespace std struct ddji...

bzoj2763 JLOI2011 飛行路線

time limit 10 sec memory limit 128 mb submit 1367 solved 527 submit status discuss alice和bob現在要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在n個城市設有業務,設這些城市分別標記為0到n 1...

bzoj 2763 JLOI2011 飛行路線

description n個點,m條雙向邊,有k次免費的機會,問最短路。sample input 5 6 1 0 4 0 1 5 1 2 5 2 3 5 3 4 5 2 3 3 0 2 100 sample output 8這道題基本演算法是spfa,但需要定乙個f的二維陣列,f i j 表示到編號...