JZOJ1914 2011集訓隊出題 最短路

2021-10-01 19:17:26 字數 1316 閱讀 7266

給乙個n個點m條邊的連通無向圖,滿足每條邊最多屬於乙個環,有q組詢問,每次詢問兩點之間的最短路徑。n<=10000,q<=10000。

這道圖的題目可以思考如何用樹上的做法來解決這道題。在簡潔的題目裡得出了乙個極為重要的資訊每個點只會出現在乙個環中。首先當然是先跑一遍dij,處理出從編號為1的點到各個點的距離,然後我們不妨先處理出每個環,並標上號,並處理出環上的邊權和(有一些細節需謹慎處理),然後思考對於每組詢問,分為如下三種情況處理即可。

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const

int n =

1e4+10;

const

int m =

6e5+10;

struct edge f[m <<1]

;struct node

;int q,n,m,cnt,head[n]

,dep[n]

,opt[n][16

],dfn[n]

,totlen[n]

,tot,col[n]

;ll dis[n]

,sum[n]

;bool vis[n]

;vector<

int> son[n]

;priority_queue q;

intread()

return x;

}bool

operator

<

(node a,node b)

void

add(

int u,

int v,

int w)

void

dij())

; dis[1]

=0;while

(!q.

empty()

));}

}void

dfs(

int u,

int from)}if

(opt[u][0

]== from) son[from]

.push_back

(u);

}void

dfs(

int u)

ll min

(ll a,ll b)

ll calc

(int u,

int v)

intmain()

return0;

}

jzoj 1916 2011集訓隊出題 飛飛俠

description 飛飛國是乙個傳說中的國度,國家的居民叫做飛飛俠。飛飛國是乙個n m的矩形方陣,每個格仔代表乙個街區。然而飛飛國是沒有交通工具的。飛飛俠完全靠地面的彈射裝置來移動。每個街區都裝有彈射裝置。使用彈射裝置是需要支付一定費用的。而且每個彈射裝置都有自己的彈射能力。我們設第i行第j列的...

2011集訓隊出題 拆遷隊

lanxisi帶領著他的拆遷隊來整治乙個街道。這個街道由n個舊房子組成,從左到右編號為1.n。每個舊房子i有乙個正整數的美觀度ai。lanxisi希望整個街道從左到右美觀度嚴格遞增,也就是保證ai i。但是舊的街道明顯不符合這個要求,於是lanxisi希望拆遷一些舊房子並在原地建立新房子來滿足這一要...

2011集訓隊出題 happiness

高一一班的座位表是個n m的矩陣,經過乙個學期的相處,每個同學和前後左右相鄰的同學互相成為了好朋友。這學期要分文理科了,每個同學對於選擇文科與理科有著自己的喜悅值,而一對好朋友如果能同時選文科或者理科,那麼他們又將收穫一些喜悅值。作為計算機競賽教練的scp大老闆,想知道如何分配可以使得全班的喜悅值總...