fgd想從成都去上海旅遊。在旅途中他希望經過一些城市並在那裡欣賞風景,品嚐風味小吃或者做其他的有趣的事情。經過這些城市的順序不是完全隨意的,比如說fgd不希望在剛吃過一頓大餐之後立刻去下乙個城市登山,而是希望去另外什麼地方喝下午茶。幸運的是,fgd的旅程不是既定的,他可以在某些旅行方案之間進行選擇。由於fgd非常討厭乘車的顛簸,他希望在滿足他的要求的情況下,旅行的距離盡量短,這樣他就有足夠的精力來欣賞風景或者是泡mm了^_^. 整個城市交通網路包含n個城市以及城市與城市之間的雙向道路m條。城市自1至n依次編號,道路亦然。沒有從某個城市直接到它自己的道路,兩個城市之間最多只有一條道路直接相連,但可以有多條連線兩個城市的路徑。任意兩條道路如果相遇,則相遇點也必然是這n個城市之一,在中途,由於修建了立交橋和下穿隧道,道路是不會相交的。每條道路都有乙個固定長度。在中途,fgd想要經過k(k<=n-2)個城市。成都編號為1,上海編號為n,而fgd想要經過的n個城市編號依次為2,3,…,k+1. 舉例來說,假設交通網路如下圖。fgd想要經過城市2,3,4,5,並且在2停留的時候在3之前,而在4,5停留的時候在3之後。那麼最短的旅行方案是1-2-4-3-4-5-8,總長度為19。注意fgd為了從城市2到城市4可以路過城市3,但不在城市3停留。這樣就不違反fgd的要求了。並且由於fgd想要走最短的路徑,因此這個方案正是fgd需要的。
第一行包含3個整數n(2<=n<=20000),m(1<=m<=200000),k(0<=k<=20),意義如上所述。以下m行,每行包含3個整數x,y,z,(1<=x
只包含一行,包含乙個整數,表示最短的旅行距離。
8 15 4
1 2 3
1 3 4
1 4 4
1 6 2
1 7 3
2 3 6
2 4 2
2 5 2
3 4 3
3 6 3
3 8 6
4 5 2
4 8 6
5 7 4
5 8 6
32 3
3 43 5
19分析:
先跑k次最短路找出前k
個點兩兩之間的最短路徑,將這些路徑縮成邊,然後在k
個點上做狀壓dp。
常數跪qaq,壓著時間過orz
**:
1 #include 2 #include 3#define maxn 20010
4#define maxm 400010
5int
t[maxm], p[maxm], w[maxm], la[maxn], e;
6int n, m, k, l, a, b, c, lim[1
<< 21];7
int dis[23][maxn], dp[23][1
<< 21
], end;
8int q[maxm * 10
], h, r, v[maxn], no;
9 inline void ins (int
from, int to, int
weight)
1017 inline int min (int a, int
b)18
21void spfa (int
s)2237}
38 h++;39}
40 dis[s][k + 2] =dis[s][n];41}
42int dfs (int i, int
st)43
52int
main ()
53
bzoj1097 旅遊景點atr
fgd想從成都去上海旅遊。在旅途中他希望經過一些城市並在那裡欣賞風景,品嚐風味小吃或者做其他的有趣的事情。經過這些城市的順序不是完全隨意的,比如說fgd不希望在剛吃過一頓大餐之後立刻去下乙個城市登山,而是希望去另外什麼地方喝下午茶。幸運的是,fgd的旅程不是既定的,他可以在某些旅行方案之間進行選擇。...
bzoj1097 POI2007 旅遊景點atr
description fgd想從成都去上海旅遊。在旅途中他希望經過一些城市並在那裡欣賞風景,品嚐風味小吃或者做其他的有趣 的事情。經過這些城市的順序不是完全隨意的,比如說fgd不希望在剛吃過一頓大餐之後立刻去下乙個城市登山,而是希望去另外什麼地方喝下午茶。幸運的是,fgd的旅程不是既定的,他可以在...
楊柳青旅遊景點 天津西青旅遊景點精選推薦
天津西青旅遊發展很快,從乙個遊客的認知感覺應該是這幾個區里較快的,而且每乙個在天津都是亮點,用當下的話來說,都是網紅熱點,在網上各大平台也都有推薦,而且只要提前購票都會有優惠,有時各個 平台都做些 啊補貼呀,實惠多些要提早預定能遇到,當天不一定有,這樣很好,十分適合提前計畫出行,能得到 上的獎勵優待...