hdu3974 dfs序建線段樹

2021-08-07 20:23:03 字數 702 閱讀 8922

題意:給出乙個有向樹,初始所有節點為-1.有兩種操作,一種為(t,x,y),表示將x節點的所有子樹中的節點變為y,另一種為(c,x),為求x節點的值

**:

#include #include #include #include #include #include #include #include using namespace std;

const int siz=50005;

int tree[siz<<3];

void build(int l,int r,int rt)

void pushdown(int rt)

}void change(int l,int r,int p,int l,int r,int rt)

pushdown(rt);

int m=(l+r)>>1;

if(l<=m)

change(l,r,p,l,m,rt<<1);

if(r>m)

change(l,r,p,m+1,r,rt<<1|1);

}int query(int p,int l,int r,int rt)

vectorg[siz];

int ll[siz],rr[siz],vis[siz];

void dfs(int s,int &id)

else}}

return 0;

}

hdu3974與poj3321 DFS序建線段樹

思路 通過dfs序把樹轉化為序列,把樹轉化為序列。進出時間戳為l i 和r i 修改樹上節點x 就變為 修改序列上的點l x 查詢以樹上節點x為根的子樹節點權值和 就變為 l x r x 的區間和 其他的也差不多 樹狀陣列,線段樹什麼的直接安排上。分析 給的是樹上有向邊,且一定有乙個根節點,邊輸入完...

hdu5692 dfs序線段樹

這是補的知識點,按先序遍歷的順序建立dfs序,用左右兩個值代表整個區間,因為dfs序最重要的特點就是子樹的區間是連續的 建立線段樹時,需要用重新標過的 下標來建立 pragma comment linker,stack 1024000000,1024000000 include include in...

dfs序 線段樹

傳送門 現有一棵樹,有以下操作 1.節點x及其所有子孫顏色都變更為k。2.要求你回答節點x的顏色。初始所有點都沒有染色。input 第一行乙個整數t t 10 表示樣例組數。對於每個測試樣例 第一行乙個整數n n 5e4 表示樹的節點個數。接下來n行,每行兩個整數u,v 1 u,v n 表示樹中u的...