日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DFS序

發(fā)布時間:2024/4/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DFS序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

DFS序

總結(jié):

1、樹轉(zhuǎn)化為線性:將樹通過dfs轉(zhuǎn)化為線性結(jié)構(gòu),這就是dfs序,和樹鏈剖分有點相似

2、普通樹轉(zhuǎn)化為線段樹:記錄每個節(jié)點構(gòu)成的樹(子樹)的起點和終點,起點是自己,這樣每個點就構(gòu)成了一個區(qū)間,然后對區(qū)間的操作就和線段樹和樹狀數(shù)組一樣了。

3、DFS序主要用來做子樹的更新,因為DFS序中子樹都是連續(xù)的。時間復(fù)雜度看樹的儲存結(jié)構(gòu),O(1)。

4、樹的儲存可以用圖來存儲,圖的數(shù)組模擬鄰接矩陣:小兵應(yīng)該先武裝好自己,然后再加入隊伍,隊長負(fù)責(zé)周轉(zhuǎn)(管最前面一個)。

?

?

詳解:

給定一棵n個節(jié)點的樹,m次查詢,每次查詢需要求出某個節(jié)點深度為h的所有子節(jié)點。

?

對于這個問題如果試圖去對每個節(jié)點保存所有深度的子節(jié)點,在數(shù)據(jù)大的時候內(nèi)存會吃不消;或者每次查詢的時候去遍歷一遍,當(dāng)數(shù)據(jù)大的時候,時間效率會非常低。

?

此時如果使用dfs序維護樹結(jié)構(gòu)就可以輕松地解決這個問題。

?

作為預(yù)處理,首先將將樹的所有節(jié)點按深度保存起來,每個深度的所有節(jié)點用一個線性結(jié)構(gòu)保存,每個深度的節(jié)點相對順序要和前序遍歷一致。

?

然后從樹的根節(jié)點進行dfs,對于每個節(jié)點記錄兩個信息,一個是dfs進入該節(jié)點的時間戳in[id],另一個是dfs離開該節(jié)點的時間戳out[id]。

?

最后對于每次查詢,求節(jié)點v在深度h的所有子節(jié)點,只需將深度為h并且dfs進入時間戳在in[v]和out[v]之間的所有節(jié)點都求出來即可,由于對于每個深度的所有節(jié)點,相對順序和前序遍歷的順序以致,那么他們的dfs進入時間戳也是遞增的,于是可以通過二分搜索求解。

?

分析

Step 1:

如下圖,可以看到,由于普通的樹并不具有區(qū)間的性質(zhì),所以在考慮使用線段樹作為解題思路時,需要對給給定的數(shù)據(jù)進行轉(zhuǎn)化,首先對這棵樹進行一次dfs遍歷,記錄dfs序下每個點訪問起始時間與結(jié)束時間,記錄起始時間是前序遍歷,結(jié)束時間是后序遍歷,同時對這課樹進行重標(biāo)號。

?

Step 2:

???????? 如下圖,DFS之后,那么樹的每個節(jié)點就具有了區(qū)間的性質(zhì)。



?

???????? 那么此時,每個節(jié)點對應(yīng)了一個區(qū)間,而且可以看到,每個節(jié)點對應(yīng)的區(qū)間正好“管轄”了它子樹所有節(jié)點的區(qū)間,那么對點或子樹的操作就轉(zhuǎn)化為了對區(qū)間的操作。

【PS: 如果對樹的遍歷看不懂的話,不妨待會對照代碼一步一步調(diào)試,或者在紙上模擬過程~】

Step 3:

???????? 這個時候,每次對節(jié)點進行更新或者查詢,就是線段樹和樹狀數(shù)組最基本的實現(xiàn)了…

?

樹是一種非線性結(jié)構(gòu),一般而言,我們總是想辦法將其轉(zhuǎn)化為線性結(jié)構(gòu),將樹上操作包括子樹操作、路徑操作等轉(zhuǎn)化為數(shù)組上的區(qū)間操作,從而在一個較為理想的復(fù)雜度內(nèi)加以解決。將樹“拍平”的方法有很多,例如歐拉序、HLD等。實際上歐拉序也是在DFS過程中得到的。不過通常而言,我們所說的DFS序是指:每個節(jié)點進出棧的時間序列

?
考慮上圖中樹的DFS序,應(yīng)為?

其中,每個節(jié)點均會出現(xiàn)2次,第一次是進入DFS的時刻,第二次是離開DFS的時刻。分別稱之為InOut。在區(qū)間操作中,如果某個節(jié)點出現(xiàn)了2次,則該節(jié)點將被“抵消”。所以通常會將Out時刻對應(yīng)的點設(shè)置為負(fù)數(shù)。

樹的DFS序列有幾個有用的性質(zhì):

  • 任意子樹是連續(xù)的。例如子樹BEFK,在序列中對應(yīng)BEEFKKFB;子樹CGHI,在序列中對應(yīng)連續(xù)區(qū)間CGGHHIIC
  • 任意點對(a,b)之間的路徑,可分為2種情況,首先令lcaab的最近公共祖先:?
  • lcaab之一,則ab之間的In時刻的區(qū)間或者Out時刻區(qū)間就是其路徑。例如AK之間的路徑就對應(yīng)區(qū)間ABEEFK,或者KFBCGGHHIICA
  • lca另有其人,則ab之間的路徑為In[a]Out[b]之間的區(qū)間或者In[b]Out[a]之間的區(qū)間。另外,還需額外加上lca!!!考慮EK路徑,對應(yīng)為EFK再加上B。考慮EH之間的路徑,對應(yīng)為EFKKFBCGGH再加上A
  • 利用這些性質(zhì),可以利用DFS序列完成子樹操作和路徑操作,同時也有可能將莫隊算法應(yīng)用到樹上從而得到樹上莫隊。

    ?

    ?

    代碼:

    dfs序是處理樹上問題很重要的一個武器,主要能夠解決對于一個點,它的子樹上的一些信息的維護。?
    就比如那天百度之星round1A的1003題,就是dfs序+線段樹維護每個點到0點的距離,然后對于每個點的更新,只需要更新它和它的子樹上的點到0點的距離,查詢的話就是它的子樹上的最大值即可?
    我的dfs序開的空間就是n,因為只在入的地方時間戳++,出來的地方時間戳不變,線段樹的每個節(jié)點應(yīng)該是時間戳

    1 void dfs(int u,int fa){ 2 p1[u]=++ti; 3 dfsnum[ti]=u; 4 for(int i=head[u];i!=-1;i=edge[i].next){ 5 int v=edge[i].v; 6 if(v==fa) continue; 7 dfs(v,u); 8 } 9 p2[u]=ti;//時間戳不變,空間為O(n) 10 }

    ?

    例題:

    BZOJ4034需要在樹上完成3類操作,單點更新,子樹更新,以及根到指定節(jié)點的路徑查詢。利用性質(zhì)1以及性質(zhì)2.1即可完成,連LCA都無需求出。對整個DFS序列使用線段樹進行維護,注意到整個序列實際上有正有負(fù),因此額外用一個域來表示正數(shù)的個數(shù)。

    4034: [HAOI2015]樹上操作

    Time Limit:?10 Sec??Memory Limit:?256 MB
    Submit:?6323??Solved:?2094
    [Submit][Status][Discuss]

    Description

    有一棵點數(shù)為 N 的樹,以點 1 為根,且樹點有邊權(quán)。然后有 M 個 操作,分為三種: 操作 1 :把某個節(jié)點 x 的點權(quán)增加 a 。 操作 2 :把某個節(jié)點 x 為根的子樹中所有點的點權(quán)都增加 a 。 操作 3 :詢問某個節(jié)點 x 到根的路徑中所有點的點權(quán)和。

    Input

    第一行包含兩個整數(shù) N, M 。表示點數(shù)和操作數(shù)。接下來一行 N 個整數(shù),表示樹中節(jié)點的初始權(quán)值。接下來 N-1? 行每行三個正整數(shù) fr, to , 表示該樹中存在一條邊 (fr, to) 。再接下來 M 行,每行分別表示一次操作。其中 第一個數(shù)表示該操作的種類( 1-3 ) ,之后接這個操作的參數(shù)( x 或者 x a ) 。

    Output

    對于每個詢問操作,輸出該詢問的答案。答案之間用換行隔開。

    Sample Input

    5 5
    1 2 3 4 5
    1 2
    1 4
    2 3
    2 5
    3 3
    1 2 1
    3 5
    2 1 2
    3 3

    Sample Output

    6
    9
    13

    HINT

    ?

    ?對于 100% 的數(shù)據(jù), N,M<=100000 ,且所有輸入數(shù)據(jù)的絕對值都不會超過 10^6 。

    ?

    Source

    鳴謝bhiaibogf提供

    1 #include <cstdio> 2 #include <climits> 3 #include <algorithm> 4 #include <iostream> 5 using namespace std; 6 7 int const SIZE = 100100; 8 typedef long long weight_t; 9 10 struct edge_t{// 11 int to; 12 int next; 13 }Edge[SIZE<<1];//雙向的 所以*2 14 int Vertex[SIZE]; 15 int ECnt; 16 weight_t W[SIZE]; 17 18 //數(shù)組模擬鄰接矩陣:頂點記錄的是下一個點,頂點負(fù)責(zé)轉(zhuǎn)運 19 inline void mkEdge(int a,int b){//造a-b這條邊 20 //先把節(jié)點的信息補充好,再建立聯(lián)系 21 //先武裝好自己,然后再圖報效 22 //每個隊的長官記錄每個隊節(jié)點的分配信息 23 Edge[ECnt].to = b; 24 Edge[ECnt].next = Vertex[a]; 25 Vertex[a] = ECnt++; 26 27 Edge[ECnt].to = a; 28 Edge[ECnt].next = Vertex[b]; 29 Vertex[b] = ECnt++; 30 } 31 32 int InIdx[SIZE],OutIdx[SIZE]; 33 int InOut[SIZE<<1]; 34 int NewIdx[SIZE<<1]; 35 int NCnt; 36 37 void dfs(int node,int parent){ 38 NewIdx[NCnt] = node; 39 InOut[NCnt] = 1; 40 InIdx[node] = NCnt++; 41 for(int next=Vertex[node];next;next=Edge[next].next){ 42 int son = Edge[next].to; 43 if ( son != parent ) dfs(son,node); 44 } 45 NewIdx[NCnt] = node; 46 InOut[NCnt] = -1; 47 OutIdx[node] = NCnt++; 48 } 49 50 int N; 51 weight_t StSum[SIZE<<3]; 52 weight_t Lazy[SIZE<<3]; 53 int Flag[SIZE<<3];//The count of the positive number in the range 54 55 inline int lson(int x){return x<<1;} 56 inline int rson(int x){return lson(x)|1;} 57 58 inline void _pushUp(int t){ 59 StSum[t] = StSum[lson(t)] + StSum[rson(t)]; 60 Flag[t] = Flag[lson(t)] + Flag[rson(t)]; 61 } 62 63 inline void _pushDown(int t){ 64 if ( 0LL == Lazy[t] ) return; 65 66 weight_t& x = Lazy[t]; 67 68 int son = lson(t); 69 StSum[son] += Flag[son] * x; 70 Lazy[son] += x; 71 72 son = rson(t); 73 StSum[son] += Flag[son] * x; 74 Lazy[son] += x; 75 76 x = 0LL; 77 } 78 79 void build(int t,int s,int e){ 80 Lazy[t] = 0LL; 81 if ( s == e ){ 82 StSum[t] = InOut[s] * W[NewIdx[s]]; 83 Flag[t] = InOut[s]; 84 return; 85 } 86 87 int m = ( s + e ) >> 1; 88 build(lson(t),s,m); 89 build(rson(t),m+1,e); 90 _pushUp(t); 91 } 92 93 void modify(int t,int s,int e,int a,int b,weight_t delta){ 94 if ( a <= s && e <= b ){ 95 StSum[t] += Flag[t] * delta; 96 Lazy[t] += delta; 97 return; 98 } 99 100 _pushDown(t); 101 int m = ( s + e ) >> 1; 102 if ( a <= m ) modify(lson(t),s,m,a,b,delta); 103 if ( m < b ) modify(rson(t),m+1,e,a,b,delta); 104 _pushUp(t); 105 } 106 107 weight_t query(int t,int s,int e,int a,int b){ 108 if ( a <= s && e <= b ){ 109 return StSum[t]; 110 } 111 112 _pushDown(t); 113 114 weight_t ret = 0LL; 115 int m = ( s + e ) >> 1; 116 if ( a <= m ) ret += query(lson(t),s,m,a,b); 117 if ( m < b ) ret += query(rson(t),m+1,e,a,b); 118 return ret; 119 } 120 121 inline weight_t query(int x){ 122 return query(1,1,N<<1,1,InIdx[x]); 123 } 124 125 inline void modify(int x,weight_t delta){ 126 modify(1,1,N<<1,InIdx[x],InIdx[x],delta); 127 modify(1,1,N<<1,OutIdx[x],OutIdx[x],delta); 128 } 129 130 inline void modifySubtree(int x,weight_t delta){ 131 modify(1,1,N<<1,InIdx[x],OutIdx[x],delta); 132 } 133 134 //這里樹的儲存方式用的是圖里面的數(shù)組仿鄰接矩陣 135 inline void initTree(int n){ 136 ECnt = NCnt = 1; 137 //vertex是頂點,這就是存儲邊的方式 138 fill(Vertex,Vertex+n+1,0); 139 } 140 141 int M; 142 bool read(){ 143 if ( EOF == scanf("%d%d",&N,&M) ) return false; 144 145 initTree(N); 146 for(int i=1;i<=N;++i)scanf("%lld",W+i);//讀權(quán)值 147 148 int a,b; 149 for(int i=1;i<N;++i){ 150 scanf("%d%d",&a,&b);//讀每一條邊 151 mkEdge(a,b);//造邊 152 } 153 cout<<"Edge[i].to"<<" "<<"Edge[i].next"<<endl; 154 for(int i=0;i<=20;i++){ 155 cout<<Edge[i].to<<" "<<Edge[i].next<<endl; 156 } 157 dfs(1,0); 158 build(1,1,N<<1); 159 return true; 160 } 161 162 void proc(){ 163 int cmd,x; 164 weight_t a; 165 while(M--){ 166 scanf("%d%d",&cmd,&x); 167 switch(cmd){ 168 case 1:scanf("%lld",&a);modify(x,a);break; 169 case 2:scanf("%lld",&a);modifySubtree(x,a);break; 170 case 3:printf("%lld\n",query(x));break; 171 } 172 } 173 } 174 int main(){ 175 freopen("in.txt","r",stdin); 176 while( read() ) proc(); 177 return 0; 178 }

    ?

    ?

    HDU 3887?
    題目傳送門:http://acm.hdu.edu.cn/showproblem.php?pid=3887?
    問你對于每個節(jié)點,它的子樹上標(biāo)號比它小的點有多少個?
    子樹的問題,dfs序可以很輕松的解決,因為點在它的子樹上,所以在線段樹中,必定在它的兩個時間戳的區(qū)間之間,所以我們只需要從小到大考慮,它的區(qū)間里有多少個點已經(jīng)放了,然后再把它放進去。很容易的解決了?
    代碼:

    1 #include <map> 2 #include <set> 3 #include <stack> 4 #include <queue> 5 #include <cmath> 6 #include <string> 7 #include <vector> 8 #include <cstdio> 9 #include <cctype> 10 #include <cstring> 11 #include <sstream> 12 #include <cstdlib> 13 #include <iostream> 14 #include <algorithm> 15 #pragma comment(linker, "/STACK:102400000,102400000") 16 17 using namespace std; 18 #define MAX 500005 19 #define MAXN 6005 20 #define maxnode 15 21 #define sigma_size 30 22 #define lson l,m,rt<<1 23 #define rson m+1,r,rt<<1|1 24 #define lrt rt<<1 25 #define rrt rt<<1|1 26 #define middle int m=(r+l)>>1 27 #define LL long long 28 #define ull unsigned long long 29 #define mem(x,v) memset(x,v,sizeof(x)) 30 #define lowbit(x) (x&-x) 31 #define pii pair<int,int> 32 #define bits(a) __builtin_popcount(a) 33 #define mk make_pair 34 #define limit 10000 35 36 //const int prime = 999983; 37 const int INF = 0x3f3f3f3f; 38 const LL INFF = 0x3f3f; 39 const double pi = acos(-1.0); 40 //const double inf = 1e18; 41 const double eps = 1e-8; 42 const LL mod = 1e9+7; 43 const ull mx = 133333331; 44 45 /*****************************************************/ 46 inline void RI(int &x) { 47 char c; 48 while((c=getchar())<'0' || c>'9'); 49 x=c-'0'; 50 while((c=getchar())>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0'; 51 } 52 /*****************************************************/ 53 54 struct Edge{ 55 int v,next; 56 }edge[MAX*2]; 57 int head[MAX]; 58 int tot; 59 int p1[MAX]; 60 int p2[MAX]; 61 int ti; 62 int sum[MAX<<2]; 63 64 void init(){ 65 mem(head,-1); 66 tot=0;ti=0; 67 } 68 69 void add_edge(int a,int b){ 70 edge[tot]=(Edge){b,head[a]}; 71 head[a]=tot++; 72 } 73 74 void dfs(int u,int fa){ 75 p1[u]=++ti; 76 for(int i=head[u];i!=-1;i=edge[i].next){ 77 int v=edge[i].v; 78 if(v==fa) continue; 79 dfs(v,u); 80 } 81 p2[u]=ti; 82 } 83 84 void build(int l,int r,int rt){ 85 sum[rt]=0; 86 if(l==r) return; 87 middle; 88 build(lson); 89 build(rson); 90 } 91 92 void pushup(int rt){ 93 sum[rt]=sum[lrt]+sum[rrt]; 94 } 95 96 void update(int l,int r,int rt,int pos,int d){ 97 if(l==r){ 98 sum[rt]+=d; 99 return; 100 } 101 middle; 102 if(pos<=m) update(lson,pos,d); 103 else update(rson,pos,d); 104 pushup(rt); 105 } 106 107 int query(int l,int r,int rt,int L,int R){ 108 if(L<=l&&r<=R) return sum[rt]; 109 middle; 110 int ret=0; 111 if(L<=m) ret+=query(lson,L,R); 112 if(R>m) ret+=query(rson,L,R); 113 return ret; 114 } 115 116 int main(){ 117 int n,p; 118 while(cin>>n>>p&&n){ 119 init(); 120 for(int i=1;i<n;i++){ 121 int a,b; 122 scanf("%d%d",&a,&b); 123 add_edge(a,b); 124 add_edge(b,a); 125 } 126 dfs(p,-1); 127 build(1,n,1); 128 for(int i=1;i<=n;i++){ 129 printf("%d",query(1,n,1,p1[i],p2[i])); 130 if(i==n) printf("\n"); 131 else printf(" "); 132 update(1,n,1,p1[i],1); 133 } 134 } 135 return 0; 136 }

    ?

    poj 3321?
    題目傳送門:http://poj.org/problem?id=3321?
    這題是一開始告訴你樹上每個節(jié)點都有1個蘋果,然后你對一個節(jié)點操作,如果有蘋果,就拿走,沒蘋果,就放上,然后詢問你以x為根的子樹上有多少個蘋果。?
    dfs序水題,代碼:

    1 #include <map> 2 #include <set> 3 #include <stack> 4 #include <queue> 5 #include <cmath> 6 #include <string> 7 #include <vector> 8 #include <cstdio> 9 #include <cctype> 10 #include <cstring> 11 #include <sstream> 12 #include <cstdlib> 13 #include <iostream> 14 #include <algorithm> 15 #pragma comment(linker, "/STACK:102400000,102400000") 16 17 using namespace std; 18 #define MAX 500005 19 #define MAXN 6005 20 #define maxnode 15 21 #define sigma_size 30 22 #define lson l,m,rt<<1 23 #define rson m+1,r,rt<<1|1 24 #define lrt rt<<1 25 #define rrt rt<<1|1 26 #define middle int m=(r+l)>>1 27 #define LL long long 28 #define ull unsigned long long 29 #define mem(x,v) memset(x,v,sizeof(x)) 30 #define lowbit(x) (x&-x) 31 #define pii pair<int,int> 32 #define bits(a) __builtin_popcount(a) 33 #define mk make_pair 34 #define limit 10000 35 36 //const int prime = 999983; 37 const int INF = 0x3f3f3f3f; 38 const LL INFF = 0x3f3f; 39 const double pi = acos(-1.0); 40 //const double inf = 1e18; 41 const double eps = 1e-8; 42 const LL mod = 1e9+7; 43 const ull mx = 133333331; 44 45 /*****************************************************/ 46 inline void RI(int &x) { 47 char c; 48 while((c=getchar())<'0' || c>'9'); 49 x=c-'0'; 50 while((c=getchar())>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0'; 51 } 52 /*****************************************************/ 53 54 struct Edge{ 55 int v,next; 56 }edge[MAX*2]; 57 int head[MAX]; 58 int tot; 59 int p1[MAX]; 60 int p2[MAX]; 61 int ti; 62 int sum[MAX<<2]; 63 64 void init(){ 65 mem(head,-1); 66 tot=0;ti=0; 67 } 68 69 void add_edge(int a,int b){ 70 edge[tot]=(Edge){b,head[a]}; 71 head[a]=tot++; 72 } 73 74 void dfs(int u,int fa){ 75 p1[u]=++ti; 76 for(int i=head[u];i!=-1;i=edge[i].next){ 77 int v=edge[i].v; 78 if(v==fa) continue; 79 dfs(v,u); 80 } 81 p2[u]=ti; 82 } 83 84 void pushup(int rt){ 85 sum[rt]=sum[lrt]+sum[rrt]; 86 } 87 88 void build(int l,int r,int rt){ 89 if(l==r){ 90 sum[rt]=1; 91 return; 92 } 93 middle; 94 build(lson); 95 build(rson); 96 pushup(rt); 97 } 98 99 void update(int l,int r,int rt,int pos){ 100 if(l==r){ 101 sum[rt]=sum[rt]^1; 102 return; 103 } 104 middle; 105 if(pos<=m) update(lson,pos); 106 else update(rson,pos); 107 pushup(rt); 108 } 109 110 int query(int l,int r,int rt,int L,int R){ 111 if(L<=l&&r<=R) return sum[rt]; 112 middle; 113 int ret=0; 114 if(L<=m) ret+=query(lson,L,R); 115 if(R>m) ret+=query(rson,L,R); 116 return ret; 117 } 118 119 int main(){ 120 int n; 121 cin>>n; 122 init(); 123 for(int i=1;i<n;i++){ 124 int a,b; 125 scanf("%d%d",&a,&b); 126 add_edge(a,b); 127 add_edge(b,a); 128 } 129 dfs(1,-1); 130 build(1,n,1); 131 int m; 132 scanf("%d",&m); 133 while(m--){ 134 char op; 135 int a; 136 getchar(); 137 scanf("%c%d",&op,&a); 138 if(op=='Q') printf("%d\n",query(1,n,1,p1[a],p2[a])); 139 else update(1,n,1,p1[a]); 140 } 141 return 0; 142 }

    ?

    ?

    CodeForces 620E?
    題目傳送門:http://codeforces.com/problemset/problem/620/E?
    給你一棵樹,每個節(jié)點都有顏色,然后問你子樹上有多少種不同的顏色?
    考慮到顏色一共只有60種,所以可以直接二進制記錄,每個節(jié)點記錄這個節(jié)點的顏色,然后區(qū)間直接左右子樹或起來,然后對x為根的子樹都變成c顏色,區(qū)間賦值,需要pushdown,pushup。?
    有個坑點就是需要記錄每個時間戳是哪個點,然后在build線段樹的時候,sum[rt]=c[dfsnum[l]],這個坑點我錯了好久,因為線段樹的節(jié)點的下標(biāo)應(yīng)該是時間戳。GG,仍需努力?
    代碼:

    1 #include <map> 2 #include <set> 3 #include <stack> 4 #include <queue> 5 #include <cmath> 6 #include <string> 7 #include <vector> 8 #include <cstdio> 9 #include <cctype> 10 #include <cstring> 11 #include <sstream> 12 #include <cstdlib> 13 #include <iostream> 14 #include <algorithm> 15 #pragma comment(linker, "/STACK:102400000,102400000") 16 17 using namespace std; 18 #define MAX 400005 19 #define MAXN 6005 20 #define maxnode 15 21 #define sigma_size 30 22 #define lson l,m,rt<<1 23 #define rson m+1,r,rt<<1|1 24 #define lrt rt<<1 25 #define rrt rt<<1|1 26 #define middle int m=(r+l)>>1 27 #define LL long long 28 #define ull unsigned long long 29 #define mem(x,v) memset(x,v,sizeof(x)) 30 #define lowbit(x) (x&-x) 31 #define pii pair<int,int> 32 #define bits(a) __builtin_popcount(a) 33 #define mk make_pair 34 #define limit 10000 35 36 //const int prime = 999983; 37 const int INF = 0x3f3f3f3f; 38 const LL INFF = 0x3f3f; 39 const double pi = acos(-1.0); 40 //const double inf = 1e18; 41 const double eps = 1e-8; 42 const LL mod = 1e9+7; 43 const ull mx = 133333331; 44 45 /*****************************************************/ 46 inline void RI(int &x) { 47 char c; 48 while((c=getchar())<'0' || c>'9'); 49 x=c-'0'; 50 while((c=getchar())>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0'; 51 } 52 /*****************************************************/ 53 54 struct Edge{ 55 int v,next; 56 }edge[MAX*2]; 57 int head[MAX]; 58 int tot; 59 int c[MAX]; 60 int p1[MAX]; 61 int p2[MAX]; 62 int ti; 63 int dfsnum[MAX]; 64 LL sum[MAX<<2]; 65 int col[MAX<<2]; 66 void init(){ 67 mem(head,-1); 68 tot=0;ti=0; 69 } 70 71 void add_edge(int a,int b){ 72 edge[tot]=(Edge){b,head[a]}; 73 head[a]=tot++; 74 } 75 76 void dfs(int u,int fa){ 77 p1[u]=++ti; 78 dfsnum[ti]=u; 79 for(int i=head[u];i!=-1;i=edge[i].next){ 80 int v=edge[i].v; 81 if(v==fa) continue; 82 dfs(v,u); 83 } 84 p2[u]=ti; 85 } 86 87 void pushup(int rt){ 88 sum[rt]=sum[lrt]|sum[rrt]; 89 } 90 91 void pushdown(int rt){ 92 if(col[rt]){ 93 col[lrt]=col[rrt]=col[rt]; 94 sum[lrt]=sum[rrt]=(1LL<<col[rt]); 95 col[rt]=0; 96 } 97 } 98 void build(int l,int r,int rt){ 99 col[rt]=0; 100 if(l==r){ 101 sum[rt]=(1LL<<c[dfsnum[l]]); 102 return; 103 } 104 middle; 105 build(lson); 106 build(rson); 107 pushup(rt); 108 } 109 110 void update(int l,int r,int rt,int L,int R,int d){ 111 if(L<=l&&r<=R){ 112 sum[rt]=(1LL<<d); 113 col[rt]=d; 114 return; 115 } 116 middle; 117 pushdown(rt); 118 if(L<=m) update(lson,L,R,d); 119 if(R>m) update(rson,L,R,d); 120 pushup(rt); 121 } 122 123 LL query(int l,int r,int rt,int L,int R){ 124 if(L<=l&&r<=R) return sum[rt]; 125 middle; 126 LL ret=0; 127 pushdown(rt); 128 if(L<=m) ret|=query(lson,L,R); 129 if(R>m) ret|=query(rson,L,R); 130 return ret; 131 } 132 133 int main(){ 134 //freopen("in.txt","r",stdin); 135 int n,m; 136 while(cin>>n>>m){ 137 init(); 138 for(int i=1;i<=n;i++) scanf("%d",&c[i]); 139 for(int i=1;i<n;i++){ 140 int a,b; 141 scanf("%d%d",&a,&b); 142 add_edge(a,b); 143 add_edge(b,a); 144 } 145 dfs(1,-1); 146 build(1,n,1); 147 //cout<<query(1,n,1,p1[6],p2[6]); 148 while(m--){ 149 int op,a; 150 scanf("%d%d",&op,&a); 151 if(op==1){ 152 int cc; 153 scanf("%d",&cc); 154 update(1,n,1,p1[a],p2[a],cc); 155 } 156 else { 157 LL k=query(1,n,1,p1[a],p2[a]); 158 //cout<<k<<" "; 159 int num=0; 160 while(k){ 161 int tmp=k%2; 162 k/=2; 163 num+=tmp; 164 //if(tmp) cout<<tmp<<" "; 165 } 166 printf("%d\n",num); 167 } 168 } 169 } 170 return 0; 171 }

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/8244003.html

    總結(jié)

    以上是生活随笔為你收集整理的DFS序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产一区二区久久久久 | 亚洲高清91 | 天天爱天天操天天爽 | 99婷婷狠狠成为人免费视频 | 中文字幕在线精品 | 岛国大片免费视频 | 91热在线| 午夜精品久久久久久久久久久 | 丰满少妇对白在线偷拍 | 亚洲一区动漫 | 一区二区三区电影 | 久久精品视频网站 | 亚州av一区 | 日韩欧美电影网 | 日韩久久久久 | 日韩精品免费在线视频 | 亚洲资源在线观看 | 日日操操操 | 欧美日韩视频在线 | 91黄色在线视频 | 国内少妇自拍视频一区 | 亚洲免费不卡 | 日韩二区在线 | 日本在线观看黄色 | 91成人网在线观看 | 午夜精品一区二区三区可下载 | 97成人资源站| 粉嫩av一区二区三区免费 | 国产国产人免费人成免费视频 | www久久久久| 亚洲成人黄色在线观看 | 成人免费视频网站在线观看 | 日韩丝袜视频 | 欧美三级免费 | 欧美男同网站 | 日韩在线观看视频网站 | 免费视频一区 | 免费午夜av | 成人在线黄色电影 | 国产香蕉在线 | 久久综合狠狠狠色97 | 国产亚洲精品久久久久久网站 | 成人免费视频网站 | 亚洲午夜精品久久久久久久久 | 午夜视频在线观看一区 | 国产日本高清 | 亚洲va欧美va人人爽 | 日韩av成人在线观看 | 欧美成年黄网站色视频 | 97在线精品 | 欧美va在线观看 | 婷婷午夜激情 | 国产在线精品一区二区三区 | 91九色视频在线播放 | 中文视频在线看 | 成人av高清 | 久久久精华网 | 亚洲精品乱码久久久久久9色 | 久久国产剧场电影 | 午夜久久视频 | 制服丝袜天堂 | 久久精品艹 | 人人艹视频 | 中文字幕亚洲综合久久五月天色无吗'' | 亚洲精品乱码久久 | 中文资源在线观看 | 欧美在线观看视频免费 | 日韩va亚洲va欧美va久久 | 欧美在线视频a | 日韩欧美一区二区三区在线 | 日b视频国产 | 免费午夜在线视频 | 国产精品99在线观看 | 摸bbb搡bbb搡bbbb| 久久99精品一区二区三区三区 | 天天天综合 | 在线韩国电影免费观影完整版 | 午夜视频在线观看一区二区三区 | 国产区精品 | 欧美a在线看 | 久久精品国产美女 | 天天透天天插 | 一区二区三区动漫 | 黄a网| 成人av影院在线观看 | 天天综合在线观看 | 国产一区在线看 | 四虎免费av| 高清av免费一区中文字幕 | 在线日本v二区不卡 | av色图天堂网 | 久久tv视频 | 久久资源总站 | 日本韩国中文字幕 | 超薄丝袜一二三区 | 日日碰夜夜爽 | 久久99九九99精品 | av女优中文字幕在线观看 | www.午夜| 少妇自拍av | 成人av电影免费在线观看 | 午夜色场 | 二区视频在线观看 | 免费三级在线 | 精品免费久久久久 | 午夜精品福利一区二区三区蜜桃 | 成人免费影院 | 99tvdz@gmail.com| 看av在线 | av怡红院 | 天天躁天天躁天天躁婷 | 国产91九色视频 | 在线а√天堂中文官网 | 国产精品久久三 | 日韩av二区 | 久久久久久美女 | 国产激情久久久 | www.午夜 | 亚洲免费精彩视频 | 91av社区| 91探花国产综合在线精品 | 中文字幕 国产 一区 | 久久久视频在线 | 欧美精品久久久久久久久老牛影院 | 免费色av| 国产精品com | 香蕉久草在线 | 91精品久| 成人天堂网 | 99在线免费观看 | 久草免费电影 | 精品国产乱码久久久久久1区二区 | 东方av免费在线观看 | 久久99精品久久久久久清纯直播 | 欧美小视频在线观看 | 日日干干| 日韩一级片网址 | 久草视频在线播放 | 成人精品在线 | 又黄又爽又湿又无遮挡的在线视频 | 国产精品美女在线观看 | 中文字幕网址 | 色综合久久88色综合天天6 | 美腿丝袜av | 国产1区2区3区精品美女 | 久久99精品波多结衣一区 | 日韩视频专区 | 日韩在线免费视频观看 | 一级片视频在线 | 91久久奴性调教 | 波多野结衣资源 | 日韩r级电影在线观看 | 免费网站看v片在线a | avlulu久久精品 | 免费在线观看毛片网站 | 中文字幕亚洲欧美 | 亚洲一级理论片 | 亚洲欧洲精品久久 | 国产又粗又长又硬免费视频 | 欧美色图狠狠干 | 亚洲伊人天堂 | 欧美另类巨大 | 欧美一进一出抽搐大尺度视频 | 亚洲国产精品500在线观看 | 国产性天天综合网 | 国产原创在线 | 免费的黄色的网站 | 久久精彩免费视频 | 日本中文字幕系列 | 久久成人午夜视频 | www.夜夜操.com | 超碰人人草 | 在线观看激情av | 国产成人av一区二区三区在线观看 | 国产96在线视频 | a天堂一码二码专区 | 在线观看中文字幕视频 | 久久精品1区2区 | 久久精品日产第一区二区三区乱码 | 婷婷中文字幕在线观看 | 国产一线二线三线在线观看 | 色狠狠操| 在线观看播放av | 久久久久久久久久久久久久电影 | 国产一级二级av | a成人v | 中文字幕国产精品一区二区 | 91免费的视频在线播放 | 久久久久久久久影视 | 久久少妇 | 免费观看www视频 | 狠狠88综合久久久久综合网 | 国产精品video爽爽爽爽 | 国产精品久久久久久久久久久杏吧 | 粉嫩av一区二区三区入口 | 国产亚洲精品久久久久久大师 | 成人欧美在线 | 美女视频久久黄 | 午夜精品久久久久99热app | 99久免费精品视频在线观看 | 免费在线观看成人 | 免费看国产一级片 | 精品国产aⅴ一区二区三区 在线直播av | 国产精品久久久久久影院 | 国产精品四虎 | 国产一区在线精品 | 91精品国产麻豆 | 美女网站在线播放 | 日韩一级片观看 | 国产精品专区在线观看 | 国产在线国偷精品产拍免费yy | 日日操天天射 | 亚洲黄污| 日韩精品不卡在线 | 久久爱影视i | 少妇bbw揉bbb欧美 | 天堂av高清| 亚洲精品男人的天堂 | 99性视频| 日韩精品在线免费播放 | 综合国产在线观看 | 中文字幕在线视频一区二区 | 日本在线观看一区 | 色婷婷啪啪免费在线电影观看 | 在线免费中文字幕 | 亚洲国产播放 | 成人日韩av| 久久试看 | 成人免费一区二区三区在线观看 | va视频在线 | 国产精品欧美久久久久三级 | 视频在线91 | 久久久久久欧美二区电影网 | 国产成人精品午夜在线播放 | 日韩欧美黄色网址 | 久久精彩视频 | 99久久精品免费 | 精品国产成人在线 | 日韩在线视频国产 | 在线观看黄污 | 国产精品免费不卡 | 久久午夜电影网 | www夜夜操com | 干天天| 久久久久久免费视频 | 欧美精选一区二区三区 | www.av在线.com| 黄色av成人在线观看 | 极品久久久久 | 欧美有色 | 亚洲午夜小视频 | 午夜精品婷婷 | 亚洲国产合集 | 久久优| 在线电影日韩 | 日韩亚洲在线 | 久久久久免费精品国产小说色大师 | 亚洲a成人v | 国产无套一区二区三区久久 | 色天天久久 | 中文在线免费观看 | 久久精品国产亚洲aⅴ | 精品欧美一区二区精品久久 | 草久久久久久 | av中文国产| 日本久久久久久久久久久 | 国产精品久久久久久久久久尿 | 999视频在线观看 | 日本女人在线观看 | 日韩精品一区二区不卡 | 亚洲 欧美 成人 | 日韩av一区二区在线 | 精品国产一区二区三区免费 | 久久er99热精品一区二区 | 国产午夜精品视频 | 天天干天天玩天天操 | 久久国产精品久久w女人spa | 国产一区二区三区高清播放 | 久久久在线视频 | www.久久久com | av高清一区二区三区 | 国产经典三级 | 99久久99久久免费精品蜜臀 | 免费在线观看的av网站 | 天天操夜夜拍 | 国产精品视频免费 | 九月婷婷色 | 91免费的视频在线播放 | 欧美日韩一区二区久久 | 国产va精品免费观看 | 久章草在线观看 | 色综久久 | 国产在线免费av | 中文字幕乱在线伦视频中文字幕乱码在线 | 精品一二三四视频 | 日韩精品视频在线观看免费 | 日韩高清www| 99视频精品视频高清免费 | 欧洲精品码一区二区三区免费看 | 嫩草av在线 | 欧美九九九| 在线免费观看黄色av | 国产黄网在线 | 奇米777777| 日日夜夜天天操 | 天天射成人 | 午夜99| 美女国产在线 | 三级av在线播放 | 国产成人精品999在线观看 | 91精品在线麻豆 | 亚洲午夜久久久久久久久电影网 | 国产精品第一页在线观看 | 国内丰满少妇猛烈精品播 | 在线观看视频黄 | www.色综合.com| 午夜色婷婷 | 日韩三级视频在线观看 | 亚洲天堂精品视频在线观看 | 国产97视频在线 | 亚洲激情在线观看 | av在线一级 | 韩日三级在线 | 色婷婷欧美 | 久久精品婷婷 | 日韩中文免费视频 | 涩涩爱夜夜爱 | 五月天综合 | 亚洲在线视频网站 | 狠狠躁日日躁狂躁夜夜躁av | av网站在线观看免费 | 911免费视频 | 色六月婷婷| 中文字幕在线观看日本 | 国产精品激情在线观看 | 国产高清av免费在线观看 | 日本 在线 视频 中文 有码 | 国产成人精品一区二区 | 日韩免费精品 | 在线观看激情av | 黄色免费视频在线观看 | 成年人免费在线观看 | 久久综合免费视频影院 | 亚洲涩涩涩 | 激情视频二区 | 色多多视频在线 | 在线免费观看黄色大片 | 91久久精品一区 | 国产精品免费视频久久久 | 美女视频网站久久 | 亚洲极色 | 69欧美视频 | 日韩中文久久 | 国产在线视频一区二区三区 | 成人cosplay福利网站 | 精品国偷自产在线 | 福利网址在线观看 | 国产一区二区在线观看视频 | 2024国产在线 | 婷婷国产精品 | 中文字幕日韩国产 | 狠狠综合网 | 天天色天| 中文字幕在线日本 | 日韩av午夜在线观看 | 天天射天天舔天天干 | 国产黄色精品 | 西西444www大胆高清视频 | 91av视频观看 | 中文字幕美女免费在线 | 免费看片网址 | 在线免费观看一区二区三区 | 综合网五月天 | 亚洲狠狠婷婷 | 国产成人中文字幕 | 欧美人人 | 日本中文字幕电影在线免费观看 | 激情视频一区二区三区 | 视频91在线 | 国产成人精品一区二区 | 免费av在 | 国产精品久久久久久久久久ktv | 久久久久久久久久免费视频 | av片一区 | 国产99久久久欧美黑人 | 亚洲毛片一区二区三区 | 99视频黄 | 手机av在线网站 | 99久久精品国产系列 | 少妇bbbb揉bbbb日本 | 久久精品3| 一级黄色大片在线观看 | 免费观看av网站 | 一区二区三区在线观看中文字幕 | 国产午夜麻豆影院在线观看 | 精品久久久久久亚洲综合网 | 在线成人免费av | 久久久久成 | 国产91九色视频 | 欧美视频二区 | 国产精品欧美久久久久久 | 最近中文字幕在线 | 免费观看一级 | 日韩av午夜在线观看 | 成人超碰97| se婷婷| 最新av网址在线观看 | 久爱综合| 国产91精品在线播放 | 日韩精品在线看 | 亚洲五月六月 | 97高清免费视频 | 激情五月av | 五月婷婷丁香六月 | 国产在线色 | 国产成人三级三级三级97 | 欧美高清视频不卡网 | 黄色一级大片免费看 | 国产网红在线观看 | 91毛片在线 | 狠狠色丁香婷婷综合 | 亚洲日本va中文字幕 | 超碰在线天天 | 国产精品久久久区三区天天噜 | 91探花国产综合在线精品 | 国产视频导航 | 日韩精品不卡在线 | 国产高清视频在线观看 | 在线精品视频免费观看 | 日韩在线中文字幕视频 | 午夜精品视频福利 | 国产精品毛片一区视频 | 日韩二三区 | 91精品国产自产在线观看永久 | 伊人影院99 | a黄色一级| 欧美精品视 | 久草在线最新 | 曰本三级在线 | 免费观看一级成人毛片 | 欧美成人理伦片 | 久久久久久国产精品美女 | 亚洲国产精品va在线 | 人人精品久久 | 久久精品视频免费 | 日韩av一区二区在线影视 | 伊人成人久久 | 中文字幕免费国产精品 | 婷婷激情在线观看 | 国产亚洲欧美在线视频 | 91av免费看 | 五月亚洲综合 | 国产精品九色 | 午夜视频导航 | 国产日韩精品一区二区在线观看播放 | 国产精品美女久久久久久久网站 | www99久久| 国产成人亚洲在线观看 | 日韩二区在线观看 | 在线视频观看亚洲 | 国产精品普通话 | 一区二区三区免费在线观看视频 | www.国产在线 | 国产精品1区2区 | 91桃色在线观看视频 | 国产精品一区在线播放 | 精品一区二区av | 黄色a视频免费 | 久久国产精品99久久久久久进口 | 免费观看久久久 | 国产黄在线免费观看 | 欧美少妇的秘密 | 国产精品久久久久久久电影 | 国产视频精品久久 | 免费在线观看污网站 | 伊人色**天天综合婷婷 | 精品av在线播放 | 色婷婷一区 | 久久福利在线 | 婷婷国产视频 | 999久久久免费精品国产 | 国产亚洲精品久久久久久久久久久久 | 少妇bbr搡bbb搡bbb | 97超视频| 国产小视频在线观看 | 久草资源在线观看 | 婷婷久月 | 婷婷5月激情5月 | 国产精品99久久久精品 | 在线免费av网 | 99精品在线播放 | 天海翼一区二区三区免费 | 欧美激情视频三区 | 色综合网 | 男女视频91 | 日夜夜精品视频 | 精品在线观看国产 | wwwww.国产| 婷婷伊人综合亚洲综合网 | 丁香电影小说免费视频观看 | 成人手机在线视频 | 国产精品免费在线观看视频 | 亚洲精品日韩一区二区电影 | 在线观看中文字幕一区 | 国产精品igao视频网网址 | 狠狠干五月天 | 久久国产一区二区 | 成全免费观看视频 | 久久精品视频免费 | 在线观看日本高清mv视频 | 高潮久久久久久 | 免费看毛片在线 | 国产小视频在线看 | 亚洲乱码中文字幕综合 | 亚洲高清91 | 国产精品一区二区av麻豆 | 久久综合久久久久88 | 成人在线视频免费 | 六月丁香激情网 | 2021国产精品视频 | 91亚洲精品久久久中文字幕 | 欧美性高跟鞋xxxxhd | 91在线在线观看 | 美女很黄免费网站 | 国产粉嫩在线观看 | 久久久精品亚洲 | 国偷自产中文字幕亚洲手机在线 | 天天色天天射天天综合网 | 伊人色**天天综合婷婷 | av蜜桃在线| 午夜久久福利视频 | 久久成人一区二区 | 国产在线精品国自产拍影院 | 国产高清在线精品 | 麻花豆传媒一二三产区 | 色婷婷在线播放 | 亚洲精品视频网址 | 中文字幕一区二区三区乱码不卡 | 在线www色| 精品影院 | 91精品国产欧美一区二区 | 六月激情| 久久久这里有精品 | 国产成人精品一区二 | 在线不卡视频 | 日韩欧美国产精品 | www.在线看片.com | 久久视频这里有久久精品视频11 | 性色av香蕉一区二区 | 日韩在线二区 | 91九色视频观看 | 91亚色免费视频 | 97自拍超碰 | 国产一区国产精品 | 九月婷婷人人澡人人添人人爽 | 亚洲综合精品视频 | 在线看黄网站 | 日韩视频区 | 777视频在线观看 | 久久精品一区二区国产 | 在线看片视频 | www色,com| 国产成人精品一区二区三区在线观看 | 国产一区二区三区视频在线 | 一级成人在线 | 日韩1页| 激情婷婷六月 | 夜夜操天天操 | 干亚洲少妇 | 午夜精品久久久久久久99无限制 | 欧美午夜视频在线 | 欧美一区中文字幕 | 久久人人97超碰精品888 | 欧美日韩精品网站 | 亚洲成人午夜av | 欧美精品在线观看免费 | 日韩最新在线 | 日韩精品一区二区三区三炮视频 | 91九色国产在线 | 天天操天天射天天爽 | 亚洲国产三级 | 91黄在线看 | 黄色com | 在线黄色毛片 | 午夜在线看片 | 在线观看亚洲国产 | 99精品视频在线观看播放 | 九色精品免费永久在线 | 韩国精品福利一区二区三区 | www.在线观看视频 | 国产精品一区二区你懂的 | 五月婷婷激情网 | 91视频在线播放视频 | 综合网五月天 | 欧美成人aa | 中文字幕亚洲五码 | 免费日韩一区二区三区 | 亚洲天堂网在线观看视频 | 天天躁天天操 | 久久国产欧美日韩 | 国产区 在线 | 国产xxxx做受性欧美88 | 国产精品久久久久久久久久尿 | 麻花豆传媒一二三产区 | 日韩欧美一区二区三区视频 | 国产专区视频在线观看 | 久草视频国产 | 国产在线a免费观看 | 中国黄色一级大片 | 亚洲欧美视频在线 | 99国产一区二区三精品乱码 | 99久久免费看 | 亚洲国产久 | 欧美色图30p | 黄色三级免费片 | 国产视频一区二区在线观看 | av免费网站| 免费在线播放av电影 | 日本三级香港三级人妇99 | 日批视频在线观看免费 | 中文字幕二区三区 | 亚洲一区二区三区在线看 | 永久免费毛片在线观看 | 人人干,人人爽 | 一级电影免费在线观看 | 亚洲国产日韩一区 | 久久综合中文字幕 | 欧美久久久一区二区三区 | 日韩在线视频看看 | 天天射天天舔天天干 | 国产精品99免视看9 国产精品毛片一区视频 | 91人网站 | 日韩视频中文字幕 | 亚洲综合色av | 欧美性色黄 | 六月色婷 | 欧美视频国产视频 | av在观看 | 色综合色综合久久综合频道88 | 91精品国产乱码在线观看 | 国产精品久久久久久超碰 | 在线观看网站av | 天天操夜夜干 | 国产午夜三级一区二区三桃花影视 | 精品国产a | 97色国产 | 在线免费黄色毛片 | 国产理伦在线 | 亚洲精品视频中文字幕 | 在线观看中文字幕网站 | 亚洲婷久久 | 在线观看国产日韩欧美 | 国产精品久久99综合免费观看尤物 | 久久精品美女视频 | 国产精品区一区 | 五月激情久久 | av永久网址 | 日本久久电影网 | 一区二区三区日韩视频在线观看 | 天天操天天曰 | 亚洲精品乱码久久久久久蜜桃不爽 | 手机看片| 国产69精品久久99的直播节目 | 三级动态视频在线观看 | 免费成人av在线 | 亚洲艳情 | 麻豆传媒精品 | 一区国产精品 | 国内精品久久久久国产 | 国产色影院 | 国产黄色在线网站 | www.com黄| 成人中文字幕+乱码+中文字幕 | av丁香花 | 久久精品资源 | 成人一级免费电影 | 国产精品福利在线观看 | 天天色天天色 | 国产九九九精品视频 | 国产成人精品999在线观看 | 狠狠躁夜夜躁人人爽视频 | 国产精品久久久久永久免费观看 | 国产视频18 | 国产成人精品女人久久久 | 久久精品波多野结衣 | 国内精品小视频 | 国产精品一区久久久久 | 成年人app网址 | 国产精品大片免费观看 | 日本最新一区二区三区 | 日韩视频在线一区 | 又粗又长又大又爽又黄少妇毛片 | 亚洲欧洲日韩在线观看 | av成人在线播放 | 国产精品午夜在线观看 | 丁香婷婷激情 | 色欧美成人精品a∨在线观看 | 中文字幕观看视频 | 99免在线观看免费视频高清 | 综合久久久久久久久 | 天天色天天搞 | 色妞久久福利网 | 韩国精品在线 | 国产精品av免费在线观看 | 国产午夜不卡 | 性色va| 久久免费在线 | 亚洲天堂精品视频 | 韩日电影在线观看 | 久久er99热精品一区二区 | 一区二区三区观看 | 久久亚洲欧美日韩精品专区 | 91在线看视频免费 | 欧美性色19p | 婷婷六月丁 | 免费av 在线 | 人人干人人超 | 免费高清无人区完整版 | 国内成人精品2018免费看 | 九九热中文字幕 | 97视频入口免费观看 | 免费av看片 | 国产精品久久久久久av | 天天操夜操视频 | 亚洲精品色| 69视频在线 | 日本最新高清不卡中文字幕 | 欧美极品在线播放 | 欧美激情视频在线免费观看 | 午夜精品视频福利 | 激情www| 色综合www| 91av免费观看 | 精品免费国产一区二区三区四区 | 亚洲国产视频网站 | 九九热免费精品视频 | 91成人在线观看喷潮 | 国产一区二区三区久久久 | 亚洲精品影院在线观看 | 久久亚洲人 | 在线国产欧美 | 久99久中文字幕在线 | 日本中文字幕视频 | 操操碰 | 久久精品aaa | 国产精品视频线看 | 亚洲狠狠操 | 久久精品视频网 | 免费视频成人 | 日日夜夜添 | 精品一区二区三区四区在线 | 免费看黄在线观看 | 免费中文字幕在线观看 | 狠狠狠色丁香婷婷综合激情 | 狠狠色丁香久久婷婷综合五月 | 国产精品第10页 | 国产一级特黄毛片在线毛片 | 337p日本欧洲亚洲大胆裸体艺术 | 在线播放 日韩专区 | 中文字幕av全部资源www中文字幕在线观看 | 久久新| 最近高清中文字幕在线国语5 | 欧美性大战久久久久 | 国产美女精品人人做人人爽 | 久久在线看 | 国产专区在线看 | 91亚洲成人| 一级黄色毛片 | 永久免费av在线播放 | 日韩av一区二区三区在线观看 | 国产99久 | 在线 日韩 av | 精品福利av | 天天干天天做 | 在线观看av免费 | 国产精品6 | 亚洲精品午夜aaa久久久 | 亚洲国产三级在线观看 | 日韩三级.com | 中文字幕专区高清在线观看 | 亚洲2019精品| 亚洲欧洲国产日韩精品 | 久久人人爽爽人人爽人人片av | 在线免费观看视频一区 | 美女视频黄是免费的 | www.婷婷com| av片子在线观看 | 毛片网在线观看 | 免费视频你懂的 | 狠狠干天天干 | 首页av在线 | 免费成人av在线 | www.亚洲激情.com | 中文字幕色在线视频 | 一区在线观看视频 | 一区二区中文字幕在线 | 国内外激情视频 | 亚洲夜夜综合 | 色偷偷88欧美精品久久久 | 亚洲一区美女视频在线观看免费 | 97人人澡人人添人人爽超碰 | 国产一级视频免费看 | 97中文字幕 | 国产不卡精品视频 | 91视频国产高清 | 99精品影视| www.久久久精品 | 久久99视频免费 | 国产日韩视频在线观看 | 国产精品美女久久久久久久 | 波多野结衣在线观看一区 | 久操97 | 国产高清视频免费 | 国产一级久久 | 国产手机av在线 | 懂色av一区二区在线播放 | 国产小视频91 | 欧美一区影院 | 成人动漫精品一区二区 | 六月色丁香 | 国产网红在线观看 | 国产在线观看99 | 欧美性色黄大片在线观看 | 天天射天天操天天 | 一区二区三区在线视频111 | 国产精品原创av片国产免费 | 成人在线免费看 | 亚洲成av人片在线观看 | 久久国内免费视频 | 永久免费的啪啪网站免费观看浪潮 | 999电影免费在线观看2020 | 国产亚洲精品久久久久久移动网络 | 欧美巨乳波霸 | 国产一区二区三区午夜 | 久久久免费观看视频 | 国产精品久久久久久久久久久久久久 | 久久久网 | 中文字幕在线观看免费高清完整版 | 2019中文在线观看 | 69xx视频| 超碰国产在线播放 | avv天堂| 中文字幕乱在线伦视频中文字幕乱码在线 | 中文字幕一区二区三区久久 | 国产亚洲欧美精品久久久久久 | 精品久久久久久亚洲综合网站 | 成人在线视频网 | 丁香六月婷婷激情 | 日韩在线观看一区 | 综合色中色 | 人人爽人人爽人人爽学生一级 | 国产糖心vlog在线观看 | 国产精品无av码在线观看 | 中文字幕电影一区 | 国产探花视频在线播放 | 成人免费精品 | 麻豆91网站 | 综合网欧美 | 亚洲精品国产成人 | 国产精品v欧美精品 | 国产在线永久 | 免费看色网站 | 最近中文字幕视频网 | 欧美视频18 | 综合激情 | 一区二区 精品 | 日日摸日日爽 | 欧美日韩二三区 | 伊在线视频 | www.夜夜操 | 丁香5月婷婷久久 | 亚洲一区二区视频 | 日韩天天干 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日韩一区二区三区观看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 91九色蝌蚪在线 | 美女在线免费视频 | 亚洲视频axxx | 久久精品美女视频网站 | 六月丁香伊人 | 国产精品18久久久久白浆 | av视屏在线| 国产色女 | 国产91对白在线播 | a黄色片在线观看 | www麻豆视频 | 五月天久久精品 | 欧美a视频在线观看 | 日韩精品观看 | 国产精品久久久久久久久久了 | 日韩欧美高清一区二区三区 | 日韩丝袜视频 | 国产韩国日本高清视频 | 国产裸体视频bbbbb | 人人干网 | 久久久久久久久免费视频 | 免费观看的av网站 | 激情亚洲综合在线 | 国产一级二级在线播放 | 久久理论片 | 日本中文字幕在线视频 | 人成电影网| 日韩成人免费在线 | 国产成人精品久久二区二区 | 99国产在线视频 | 日躁夜躁狠狠躁2001 | 久久久久女人精品毛片九一 | 欧美日韩免费一区 | av免费福利| 国产日韩三级 | 啪啪免费观看网站 | 91久久丝袜国产露脸动漫 | 久草电影免费在线观看 | 狠狠久久综合 | 亚洲伦理一区二区 | 国产1级视频 | 午夜国产一区二区 | 99久久精品久久久久久清纯 | 亚洲在线精品视频 | 美女久久久久久久久久久 | 成年人在线播放视频 | 精品久久久免费视频 | 欧美另类色图 | 91在线观看黄 | 五月综合| 精品一区二区免费视频 | 99人久久精品视频最新地址 | 国产亚洲精品综合一区91 | 波多野结衣久久资源 | 国产99亚洲| 99精品一区二区 | 蜜臀av性久久久久av蜜臀妖精 | 国产色婷婷在线 | 成人久久影院 | 男女免费视频观看 | 日本精品一区二区三区在线观看 | 美女网站视频免费都是黄 | www蜜桃视频 | 国产精品久久久久高潮 | 久久久久五月天 | 天天爱天天干天天爽 | 久久久午夜视频 | av成人免费在线看 | 99这里只有久久精品视频 | 999在线视频 | 亚洲综合在线视频 | 国产精品 999| 97人人模人人爽人人喊网 | 有码中文在线 | 成人在线免费观看网站 | 91理论片午午伦夜理片久久 | 一区二区精品在线 | 精品国产免费一区二区三区五区 | 精品视频不卡 | 丁香花在线视频观看免费 | 日本黄色大片免费 | 99国产精品免费网站 | 波多野结衣综合网 | 成人精品视频 | 久久久久一区二区三区四区 | 精品亚洲视频在线 | 国产美女精品视频 | 探花视频网站 | 91热视频在线观看 | 欧美日韩国产mv | 亚洲蜜桃av| 国产91区 | 中文字幕丝袜制服 | 久草在线综合网 | 97超碰国产精品女人人人爽 | 欧美精品九九99久久 | 69精品视频在线观看 | 日韩在线第一区 | 久久99精品国产99久久 | 色婷婷 亚洲 | 在线播放日韩av | 麻花豆传媒一二三产区 | 日韩三级视频在线观看 | 久久99亚洲精品久久久久 | 国产成人久久精品77777 | 91亚洲精品久久久久图片蜜桃 | 国产aaa大片 | 中文国产字幕在线观看 | 婷婷丁香色 | 人人爽人人爽人人 | 精品久久久999 | 亚洲砖区区免费 | 成人毛片网 | 色综合天天色综合 | 成人av一区二区兰花在线播放 | 日韩高清精品免费观看 | 精品视频免费久久久看 | 人人插人人舔 | 日本在线观看中文字幕 | 免费网站在线观看人 | 午夜骚影 | 精品麻豆|