Jzoj3717 NOI2014模擬7 2 火車

2021-08-08 19:49:24 字數 872 閱讀 7534

a國有n個城市,城市之間有一些雙向道路相連,並且城市兩兩之間有唯一路徑。現在有火車在城市a,需要經過m個城市。火車按照以下規則行駛:每次行駛到還沒有經過的城市中在m個城市中最靠前的。現在小a想知道火車經過這m個城市後所經過的道路數量。

很顯然的樹剖題目嘛,加上個區間打標記即可,可以用樹狀陣列

注意資料很坑,dfs爆棧,所以要從最中間開始dfs

(真的不知道為什麼是noi模擬)

#include#include#include#define n 500010

using namespace std;

struct edge g[n<<1];

int h[n],f[n],d[n],top[n],son[n],sz[n];

int n,m,cnt=0,k,w[n],v[n],tot=0; long long ans=0;

inline void adj(int x,int y); h[x]=cnt;

}inline int _(int x)

inline void add(int x,int k)

inline int sum(int x,int k=0)

void dfs(int x,int p)

}void dijk(int x,int t)

int lca(int a,int b)

if(d[top[a]]>d[top[b]]) swap(a,b);

add(w[b]+1,-1); add(w[top[b]],1); b=f[top[b]]; }}

int range(int a,int b)

int main()

} printf("%lld\n",ans);

}

Jzoj3717 NOI2014模擬7 2 火車

a國有n個城市,城市之間有一些雙向道路相連,並且城市兩兩之間有唯一路徑。現在有火車在城市a,需要經過m個城市。火車按照以下規則行駛 每次行駛到還沒有經過的城市中在m個城市中最靠前的。現在小a想知道火車經過這m個城市後所經過的道路數量。很顯然的樹剖題目嘛,加上個區間打標記即可,可以用樹狀陣列 注意資料...

Jzoj3717 NOI2014模擬7 2 火車

a國有n個城市,城市之間有一些雙向道路相連,並且城市兩兩之間有唯一路徑。現在有火車在城市a,需要經過m個城市。火車按照以下規則行駛 每次行駛到還沒有經過的城市中在m個城市中最靠前的。現在小a想知道火車經過這m個城市後所經過的道路數量。很顯然的樹剖題目嘛,加上個區間打標記即可,可以用樹狀陣列 注意資料...

NOI2014 魔法森林

為了得到書法大家的真傳,小e同學下定決心去拜訪住在魔法森林中的隱士。魔法森林可以被看成乙個包含個n節點m條邊的無向圖,節點標號為 1 n 邊標號為1 m 初始時小e同學在 1 號節點,隱士則住在 n 號節點。小e需要通過這一片魔法森林,才能夠拜訪到隱士。魔法森林中居住了一些妖怪。每當有人經過一條邊的...