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需要通過這一片魔法森林,才能夠拜訪到隱士。魔法森林中居住了一些妖怪。每當有人經過一條邊的...