1036 商務旅行 lca 離線

2021-08-29 01:16:47 字數 1552 閱讀 2258

題目描述 description

某首都城市的商人要經常到各城鎮去做生意,他們按自己的路線去做,目的是為了更好的節約時間。

假設有n個城鎮,首都編號為1,商人從首都出發,其他各城鎮之間都有道路連線,任意兩個城鎮之間如果有直連道路,在他們之間行駛需要花費單位時間。該國公路網路發達,從首都出發能到達任意乙個城鎮,並且公路網路不會存在環。

你的任務是幫助該商人計算一下他的最短旅行時間。

輸入描述 input description

輸入檔案中的第一行有乙個整數n,1<=n

<=30 000,為城鎮的數目。下面n-1行,每行由兩個整數a 和b (1<=a, b

<=n; a<>b)組成,表示城鎮a和城鎮b有公路連線。在第n+1行為乙個整數m,下面的m行,每行有該商人需要順次經過的各城鎮編號。

輸出描述 output description

在輸出檔案中輸出該商人旅行的最短時間。

樣例輸入 sample input

5
1 2
1 5
3 5
4 5
4
1
3
2
5
樣例輸出 sample output

#include#include#include#include#include#include#include#define n 100005 

using namespace std;

int father[30010*2],vis[30010*2];

int head[30010*2],head1[30010*2],dis[30010*2];

int root[30010*2],ans[30010*2];

int z,zz;

int n,m;

struct ac

r[30010*2],rr[30010*2];

void init()

}void add(int u,int v,int w)

void add1(int u,int v,int id)

int find(int w)

void link(int x,int y)

void taxjan(int cur)

} for(int i=head1[cur];i+1;i=rr[i].next) }

}int main()

int m,x;

cin>>m;

int c,d;

cin>>c;

for(int i=1;i<=m-1;i++)

taxjan(1);

int sum=0;

for(int i=1;i<=m-1;i++)

cout

}

Codevs P1036 商務旅行 LCA

題目描述 description 某首都城市的商人要經常到各城鎮去做生意,他們按自己的路線去做,目的是為了更好的節約時間。假設有n個城鎮,首都編號為1,商人從首都出發,其他各城鎮之間都有道路連線,任意兩個城鎮之間如果有直連道路,在他們之間行駛需要花費單位時間。該國公路網路發達,從首都出發能到達任意乙...

商務旅行 codevs1036 lca

某首都城市的商人要經常到各城鎮去做生意,他們按自己的路線去做,目的是為了更好的節約時間。假設有n個城鎮,首都編號為1,商人從首都出發,其他各城鎮之間都有道路連線,任意兩個城鎮之間如果有直連道路,在他們之間行駛需要花費單位時間。該國公路網路發達,從首都出發能到達任意乙個城鎮,並且公路網路不會存在環。你...

codevs 1036 商務旅行 (LCA)

某首都城市的商人要經常到各城鎮去做生意,他們按自己的路線去做,目的是為了更好的節約時間。假設有n個城鎮,首都編號為1,商人從首都出發,其他各城鎮之間都有道路連線,任意兩個城鎮之間如果有直連道路,在他們之間行駛需要花費單位時間。該國公路網路發達,從首都出發能到達任意乙個城鎮,並且公路網路不會存在環。你...