青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

The Fourth Dimension Space

枯葉北風(fēng)寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

并查集學(xué)習(xí)小節(jié)(POJ版)

什么是并查集呢,我相信大家都已經(jīng)很熟悉了,在這里我就不再贅述。寫這篇文章的主要目的不是新手教學(xué),而是為了借POJ上相關(guān)的題目,全面的總結(jié)一下并查集問題和它的各個變種。

POJ 1611 The Suspects
題目大意:有n個學(xué)生(標(biāo)號為0 to n-1),m個學(xué)生社團(tuán),給出每個社團(tuán)里所有學(xué)生的標(biāo)號,并假設(shè)0號學(xué)生患有SARS(社團(tuán)里只要用一個學(xué)生患病,則整個社團(tuán)里的學(xué)生都會被隔離),問最后一共會有多少學(xué)生被隔離?
這是一個最基礎(chǔ)的并查集的應(yīng)用,掃描每一個社團(tuán),只要兩個學(xué)生出現(xiàn)在同一個社團(tuán),則將這兩個集合合并起來,最后輸出0號點(diǎn)所在集合的rank值集合(rank值記錄這個集合中的元素個數(shù)并用一個flag值跟蹤0號元素所在集合標(biāo)號)即可。
這是并查集問題的第一種應(yīng)用:集合合并,判斷兩點(diǎn)是不是在同一個集合,求某一個集合上的元素個數(shù)等。

#include<stdio.h>

#define MAX 
30000
int f[MAX];//這里的1001只是一個示意性的數(shù)字 代表初始狀態(tài)下的分支數(shù)目
int r[MAX];
int flag;
//由于不知道應(yīng)該將子樹掛到那個集合上面去,故需要一個準(zhǔn)則,這里的準(zhǔn)則是將子樹掛到
//r值大的集合上面去,初始狀態(tài)下r數(shù)組的值均為一,代表每個分支下只有一個數(shù)字





int find(int n)
{
    
if(f[n]==n)
        
return n;
    
else
        f[n]
=find(f[n]);
    
return f[n];
}
//查找函數(shù),并壓縮路徑


int Union(int x,int y)
{
    
int a=find(x);
    
int b=find(y);
    
if(a==b)
        
return 0;
    
else if(r[a]<=r[b])
    
{
        f[a]
=b;
        r[b]
+=r[a];
        
if(a==flag)
            flag
=b;
    }

    
else
    
{
        f[b]
=a;
        r[a]
+=r[b];
        
if(b==flag)
            flag
=a;
    }

    
return 1;
    
}
//合并函數(shù),如果屬于同一分支則返回0,成功合并返回1



int main()
{

    
int n,m;
    
int i,j;
    
int num;
    
int maxnum=0;

    
while(scanf("%d%d",&n,&m))
    
{
        flag
=0;
        maxnum
=0;
        
int temp1,temp2;

        
if(n==0&&m==0)
            
break;
        
for(i=0;i<n;i++)
        
{

            f[i]
=i;
            r[i]
=1;
        }

        
for(j=1;j<=m;j++)
        
{
            scanf(
"%d",&num);
            
for(i=0;i<num;i++)
            
{
                
if(i==0)
                    scanf(
"%d",&temp1);
                
else
                
{
                    scanf(
"%d",&temp2);
                    Union(temp1,temp2);
                }

            }

        }


        printf(
"%d\n",r[flag]);
        

    }

    
return 0;
}



POJ 2492 A Bug's Life
個人認(rèn)為它是初級并查集問題的一個升級。同時(shí)這個題讓我看到了食物鏈的影子。。。
題目的大意是給出n只bug和m次觀察到的性行為,并以此為依據(jù)判斷兩只bugs是不是有同性戀行為(gay)。
比如3只bug
1 2有性行為
2 3有性行為
1 3有性行為
---->>>>>首先1,2是異性。
---->>>>>然后2,3是異性。
可以推出1,3是異性。
但是1,3有性行為,所以可以判斷出有一定有同性戀。

剝離這個題目所賦予的外殼,我們抽出這個問題的本質(zhì):并查集!
其實(shí),這里最重要的是去維護(hù)每一個點(diǎn)到集合頂點(diǎn)的偏移量。(注意:下面生造了一個詞 所謂集合元素 比如說f[i]=i,那么i就是集合元素,集合偏移量就是集合元素的偏移量)

初始狀態(tài)下,應(yīng)該是
i號點(diǎn)掛在i號集合下面
我們考慮一般情況:假設(shè)合并的過程已經(jīng)進(jìn)行了一部分 ,這樣每一個集合下面都有元素,且各自對于頂點(diǎn)的偏移量都算出來了;
現(xiàn)在在a集合中的元素x和b集合中的元素y進(jìn)行合并。此時(shí)有兩中情況改變偏移量;
1.首先是集合的合并,如果要將a,b集合合并,又要保證x,y數(shù)字的kind不相同,比如說把b集合掛到a集合下面去。
代表集合的那個元素,他的偏移量永遠(yuǎn)是0,所以b要改變偏移量,使得b里面的y在進(jìn)行變換后要和x相異。
如果 kind[x]=0;kind[y]=0;那么y對應(yīng)的那個代表集合的元素的偏移量必須變成1,因?yàn)橹挥羞@樣才能使得合并后,x,y有不同的kind;
如果 kind[x]=0,kind[y]=1;y對應(yīng)代表集合的元素偏移量是0,所以對應(yīng)集合偏移量還是0;
類推   kind[x]=1,kind[y]=0,同上,0;
           kind[x]=1,kind[y]=1,y集合偏移量應(yīng)該變?yōu)?;
綜上 可以得到一個同或的關(guān)系。
用等式 kind[a]=(kind[x]+kind[y]+1)%2;恰好滿足要求.
2.然后是壓縮路徑時(shí)候的偏移量改變
個人認(rèn)為,這個主要是解決集合合并時(shí)候產(chǎn)生的“殘余問題”,因?yàn)樵诤喜⒓系臅r(shí)候只是考慮了集合的偏移量,至于它下面的元素一概不管。一個壓縮路徑既分離了父子元素的偏移量,又使得子元素直接指向集合元素。

總而言之,并查集的操作就是不斷地維護(hù)者各個集合中,每個元素身上對集合元素的偏移關(guān)系。從而確定他們是否具有同性戀。
在這個題中,假設(shè)是不存在同性戀的,所以只有找到矛盾才輸出 有同性戀。
#include<iostream>
#include
<cstdio>
using namespace std;
#define MAX 2001

int f[MAX];
int kind[MAX];

int n,m;
int testcase;

void init()
{
    
int i;
    
for(i=1;i<=n;i++)
    

        f[i]
=i;
        kind[i]
=0;
    }

}


int Find(int n)
{
    
    
if(f[n]==n)
        
return n;
    
int t=Find(f[n]);
    kind[n]
=(kind[n]+kind[f[n]])%2;
    f[n]
=t;
    
return f[n];
}


int  Union(int x,int y)
{
    
    
int a=Find(x);
    
int b=Find(y);
    
if(a==b)
    
{
        
if(kind[x]==kind[y])
            
return 1;//1代表有同性戀情況
    }

    
else 
    
{
        f[a]
=b;
        kind[a]
=(kind[x]+kind[y]+1)%2;
    }

    
return 0;
}






int main()
{
    scanf(
"%d",&testcase);
    
int i,j;
    
int a,b;
    
int flag;
    
for(i=1;i<=testcase;i++)
    
{
        flag
=0;
        scanf(
"%d%d",&n,&m);
        init();
        
for(j=1;j<=m;j++)
        
{
            scanf(
"%d%d",&a,&b);
            
if(Union(a,b))
            
{
                flag
=1;
            }

        }

        
if(flag==1)
            printf(
"Scenario #%d:\nSuspicious bugs found!\n\n",i);
        
else 
            printf(
"Scenario #%d:\nNo suspicious bugs found!\n\n",i);


    }

    
return 0;
}



POJ 1182 食物鏈 
中文題,讓你輸出假話的個數(shù)。其實(shí)這道題是上一道題的擴(kuò)展,如果把上一道題也想成是食物鏈的話,就是1吃2,2吃1.
而這里是三個動物,所以同樣是維護(hù)一個偏移量,只不過多了一位罷了。
程序的過程實(shí)質(zhì)上就是在維護(hù)并查集,判斷是否是假話是在維護(hù)的過程中進(jìn)行的,只能算是附屬品吧。
#include<iostream>
using namespace std;
#define MAX 50005

int f[MAX];
int kind[MAX];

int n,m;

void init()
{
    
int i;
    
for(i=1;i<=n;i++)
    

        f[i]
=i;
        kind[i]
=0;
    }

}


int Find(int n)
{
    
    
if(f[n]==n)
        
return n;
    
int t=Find(f[n]);
    kind[n]
=(kind[n]+kind[f[n]])%3;
    f[n]
=t;
    
return f[n];
}

bool  Union(int x,int y,int c)
{
    
if(x>n||y>n)
        
return 1;
    
int a=Find(x);
    
int b=Find(y);
    
if(c==1)
    
{
        
if(a==b)
        
{

            
if(kind[x]!=kind[y])
                
return true;
        }

        
else if(a!=b)
        
{

            f[b]
=a;
            kind[b]
=(kind[x]-kind[y]+3)%3;
        }

    }

    
else
    
{
        
if(x==y)
            
return true;
        
if(a==b)
        
{
            
if((kind[x]+1)%3!=kind[y])
                
return true;
        }

        
else if(a!=b)
        
{
            f[b]
=a;
            kind[b]
=(kind[x]-kind[y]+4)%3;
        }


    }

    
return false;
}


int main()
{
    
int i,j;
    
int a,b,c;
    
int sum=0;
    scanf(
"%d%d",&n,&m);
    init();
    
for(i=1;i<=m;i++)
    
{
        scanf(
"%d%d%d",&c,&a,&b);
        
if(Union(a,b,c))
            sum
++;
    }

    printf(
"%d\n",sum);
    
return 0;
}



 這里將兩個集合并起來并將所掛集合偏移量指向:
kind[b]=(kind[x]-kind[y]+4)%3;
想想上一題是不是也很類似呢
其實(shí)上一題的公式也可以改成
kind[b]=(kind[x]-kind[y]+3)%2;
不管是幾個動物循環(huán),都能得到類似的結(jié)論,所以以后碰到4,5,6,7。。。個動物的食物鏈,你應(yīng)該也會做了吧?^_^

POJ 1988 Cube Stacking
這道題更有意思了,說它開辟了并查集問題的新局面并不為過;上面2道題,研究的主要是到集合元素的偏移量,而這道題要求的是一個“邏輯上”到達(dá)集合元素的距離!集合合并的時(shí)候同樣只修改被掛集合元素的距離值,殘余部分留給壓縮路徑來處理.
如果理解了上面的問題,這個問題就很好理解了。
#include<iostream>
#include
<algorithm>
#include
<cmath>
using namespace std;
#define MAX 30000



int f[MAX+1];
int r[MAX+1];
int above[MAX+1];

void init()
{

    
int i;
    
for(i=1;i<=MAX;i++)
    
{
        above[i]
=0;
        f[i]
=i;
        r[i]
=1;
    }

}


int realfather;
int find(int n)
{
    
int t;
    
if(f[n]==n)
    
{
        realfather
=n;
        
return n;
    }

    
else
    
{
        t
=find(f[n]);
        
if(f[n]!=realfather)
            above[n]
+=(above[f[n]]);
        f[n]
=t;

    }

    
return f[n];
}
//查找函數(shù),并壓縮路徑


void Union(int x,int y)
{
    
int a=find(x);
    
int b=find(y);
    f[b]
=a;
    above[b]
+=r[a];
    r[a]
+=r[b];
    
    
}
//合并函數(shù),如果屬于同一分支則返回0,成功合并返回1

int main()
{
    
int p;
    
int i;
    init();
    
char order;
    
int a,b;
    scanf(
"%d",&p);
    
for(i=1;i<=p;i++)
    
{
        cin.ignore();
        scanf(
"%c",&order);
        
if(order=='M')
        
{

            scanf(
"%d%d",&a,&b);
            Union(a,b);
        }

        
else if(order=='C')
        
{
            scanf(
"%d",&a);
            printf(
"%d\n",r[find(a)]-above[a]-1);
        }


    }

    
return 0;
}

銀河英雄傳說 NOI 2002
說道并查集,還有一道非常經(jīng)典的題目 還有那個“著名”的楊威利元帥,呵呵。這題附上原題,有了上面的講解,相信你能很快找到解法^_^

銀河英雄傳說


【問題描述】

公元五八○一年,地球居民遷移至金牛座α第二行星,在那里發(fā)表銀河聯(lián)邦創(chuàng)立宣言,同年改元為宇宙歷元年,并開始向銀河系深處拓展。

宇宙歷七九九年,銀河系的兩大軍事集團(tuán)在巴米利恩星域爆發(fā)戰(zhàn)爭。泰山壓頂集團(tuán)派宇宙艦隊(duì)司令萊因哈特率領(lǐng)十萬余艘戰(zhàn)艦出征,氣吞山河集團(tuán)點(diǎn)名將楊威利組織麾下三萬艘戰(zhàn)艦迎敵。

楊威利擅長排兵布陣,巧妙運(yùn)用各種戰(zhàn)術(shù)屢次以少勝多,難免恣生驕氣。在這次決戰(zhàn)中,他將巴米利恩星域戰(zhàn)場劃分成30000列,每列依次編號為1, 2, …, 30000。之后,他把自己的戰(zhàn)艦也依次編號為1, 2, …, 30000,讓第i號戰(zhàn)艦處于第i(i = 1, 2, …, 30000),形成“一字長蛇陣”,誘敵深入。這是初始陣形。當(dāng)進(jìn)犯之?dāng)车竭_(dá)時(shí),楊威利會多次發(fā)布合并指令,將大部分戰(zhàn)艦集中在某幾列上,實(shí)施密集攻擊。合并指令為M i j,含義為讓第i號戰(zhàn)艦所在的整個戰(zhàn)艦隊(duì)列,作為一個整體(頭在前尾在后)接至第j號戰(zhàn)艦所在的戰(zhàn)艦隊(duì)列的尾部。顯然戰(zhàn)艦隊(duì)列是由處于同一列的一個或多個戰(zhàn)艦組成的。合并指令的執(zhí)行結(jié)果會使隊(duì)列增大。

然而,老謀深算的萊因哈特早已在戰(zhàn)略上取得了主動。在交戰(zhàn)中,他可以通過龐大的情報(bào)網(wǎng)絡(luò)隨時(shí)監(jiān)聽楊威利的艦隊(duì)調(diào)動指令。

在楊威利發(fā)布指令調(diào)動艦隊(duì)的同時(shí),萊因哈特為了及時(shí)了解當(dāng)前楊威利的戰(zhàn)艦分布情況,也會發(fā)出一些詢問指令:C i j。該指令意思是,詢問電腦,楊威利的第i號戰(zhàn)艦與第j號戰(zhàn)艦當(dāng)前是否在同一列中,如果在同一列中,那么它們之間布置有多少戰(zhàn)艦。

作為一個資深的高級程序設(shè)計(jì)員,你被要求編寫程序分析楊威利的指令,以及回答萊因哈特的詢問。

最終的決戰(zhàn)已經(jīng)展開,銀河的歷史又翻過了一頁……


【輸入文件】

輸入文件galaxy.in的第一行有一個整數(shù)T1<=T<=500,000),表示總共有T條指令。

以下有T行,每行有一條指令。指令有兩種格式:

  1. M i j ij是兩個整數(shù)(1<=i , j<=30000),表示指令涉及的戰(zhàn)艦編號。該指令是萊因哈特竊聽到的楊威利發(fā)布的艦隊(duì)調(diào)動指令,并且保證第i號戰(zhàn)艦與第j號戰(zhàn)艦不在同一列。

  2. C i j ij是兩個整數(shù)(1<=i , j<=30000),表示指令涉及的戰(zhàn)艦編號。該指令是萊因哈特發(fā)布的詢問指令。


【輸出文件】

輸出文件為galaxy.out。你的程序應(yīng)當(dāng)依次對輸入的每一條指令進(jìn)行分析和處理:

如果是楊威利發(fā)布的艦隊(duì)調(diào)動指令,則表示艦隊(duì)排列發(fā)生了變化,你的程序要注意到這一點(diǎn),但是不要輸出任何信息;

 如果是萊因哈特發(fā)布的詢問指令,你的程序要輸出一行,僅包含一個整數(shù),表示在同一列上,第i號戰(zhàn)艦與第j號戰(zhàn)艦之間布置的戰(zhàn)艦數(shù)目。如果第i號戰(zhàn)艦與第j號戰(zhàn)艦當(dāng)前不在同一列上,則輸出-1


【樣例輸入】

4

M 2 3

C 1 2

M 2 4

C 4 2


【樣例輸出】

-1

1


【樣例說明】

戰(zhàn)艦位置圖:表格中阿拉伯?dāng)?shù)字表示戰(zhàn)艦編號


第一列

第二列

第三列

第四列

……

初始時(shí)

1

2

3

4

……

M 2 3

1


3

2

4

……

C 1 2

1號戰(zhàn)艦與2號戰(zhàn)艦不在同一列,因此輸出-1

M 2 4

1



4

3

2

……

C 4 2

4號戰(zhàn)艦與2號戰(zhàn)艦之間僅布置了一艘戰(zhàn)艦,編號為3,輸出1

 

不知道并查集問題還有沒有什么別的變種呢?除了維護(hù)偏移量和到頂點(diǎn)的距離,還有沒有可能是別的情況呢?比如說。。。。。。如果你有更好的想法,歡迎和我交流。


文章由abilitytao原創(chuàng)
轉(zhuǎn)載請注明出處:http://m.shnenglu.com/abilitytao/archive/2009/10/18/98899.html

posted on 2009-10-18 21:31 abilitytao 閱讀(3189) 評論(5)  編輯 收藏 引用

評論

# re: 并查集學(xué)習(xí)小節(jié)(POJ版) 2009-11-12 08:54 ljf

cube stacking 那個find中沒必要用那個realfather吧?
因?yàn)閍bove[realfather] = 0
加不加那個判斷都無所謂,是不是?  回復(fù)  更多評論   

# re: 并查集學(xué)習(xí)小節(jié)(POJ版) 2010-05-14 16:43 lqq

第一題,那個壓縮路徑的算法好像少了一點(diǎn)東西  回復(fù)  更多評論   

# re: 并查集學(xué)習(xí)小節(jié)(POJ版) 2010-07-18 12:07 簡單就好

Union函數(shù)不用返回值,可定義為void型  回復(fù)  更多評論   

# re: 并查集學(xué)習(xí)小節(jié)(POJ版) 2010-07-18 22:04 abilitytao

@簡單就好
返回值為1代表合并成功,返回值為0代表合并不成功。  回復(fù)  更多評論   

# re: 并查集學(xué)習(xí)小節(jié)(POJ版) 2015-07-19 09:01 謝謝

xiexie  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品一区二区三区蜜臀 | 国产精自产拍久久久久久| 久久精品一区| 香蕉免费一区二区三区在线观看 | 美女视频一区免费观看| 久久久综合激的五月天| 久久综合色88| 欧美日本国产| 欧美视频在线播放| 国产伦精品一区二区三区在线观看 | 亚洲国产视频直播| 午夜久久电影网| 国内一区二区三区在线视频| 国产精品毛片va一区二区三区 | 亚洲国产精品毛片| 亚洲另类自拍| 亚洲免费在线| 久久久国产精品一区| 亚洲国产精品电影| 一区二区免费在线观看| 久久精品99国产精品酒店日本| 老司机一区二区三区| 欧美四级在线| 在线国产欧美| 先锋影音国产精品| 蜜桃av久久久亚洲精品| 一区二区三区av| 久久久亚洲精品一区二区三区 | 亚洲一区亚洲| 另类酷文…触手系列精品集v1小说| 亚洲国产99| 欧美一级久久久| 欧美成人一区二区在线| 国产欧美一区二区三区国产幕精品| 亚洲国产精品久久久久秋霞不卡 | 在线看不卡av| 欧美一区国产一区| 亚洲免费观看视频| 免费91麻豆精品国产自产在线观看| 欧美图区在线视频| 亚洲乱码视频| 久久中文在线| 亚洲综合激情| 欧美视频在线观看 亚洲欧| **性色生活片久久毛片| 欧美一区二区成人6969| 99在线精品视频| 欧美精品成人一区二区在线观看| 在线观看一区二区精品视频| 欧美一级视频免费在线观看| 99天天综合性| 欧美男人的天堂| 亚洲人成绝费网站色www| 麻豆精品网站| 香蕉视频成人在线观看| 国产伦精品一区二区三区四区免费 | 欧美精品亚洲精品| 尤物在线观看一区| 久久综合狠狠综合久久综青草| 亚洲欧美日本视频在线观看| 国产精品久久久久久五月尺| 一本色道久久综合亚洲精品不 | 小处雏高清一区二区三区| 国产精品高潮呻吟| 亚洲欧美在线免费| 一区二区三区国产在线| 欧美日韩在线视频一区| 亚洲一区在线播放| 亚洲视频精品| 国产精品日韩在线观看| 亚洲欧美一级二级三级| 亚洲图中文字幕| 国产女主播在线一区二区| 欧美一区二区在线观看| 欧美一区免费视频| 在线观看亚洲精品| 亚洲高清在线观看一区| 欧美日韩免费观看一区三区| 亚洲性线免费观看视频成熟| 亚洲一区二区三区在线看| 国产亚洲精品综合一区91| 久久视频精品在线| 你懂的成人av| 亚洲欧美综合| 久久久久久黄| 亚洲特黄一级片| 欧美在线1区| 99pao成人国产永久免费视频| 国产精品99久久久久久www| 国产一区二区高清不卡| 欧美激情中文字幕一区二区| 欧美日韩视频在线一区二区| 久久精品在线观看| 欧美激情四色 | 亚洲免费观看高清完整版在线观看熊| 欧美日韩精品二区| 欧美影院午夜播放| 欧美成人午夜77777| 欧美亚洲午夜视频在线观看| 欧美一区二区三区四区在线观看| 亚洲黄一区二区| 亚洲欧美日韩一区二区三区在线观看| 亚洲国产日韩欧美综合久久| 洋洋av久久久久久久一区| 国产日韩av在线播放| 久久精品99久久香蕉国产色戒| 亚洲国产高清视频| 国产真实乱子伦精品视频| 亚洲精品之草原avav久久| 亚洲欧洲一区二区天堂久久 | 欧美日韩专区| 久久天堂国产精品| 国产精品激情电影| 欧美sm极限捆绑bd| 欧美性猛交视频| 美女国内精品自产拍在线播放| 欧美性猛片xxxx免费看久爱| 玖玖精品视频| 国产欧美精品一区aⅴ影院| 欧美激情在线有限公司| 国产婷婷精品| 中文国产一区| 在线亚洲成人| 久久综合一区二区三区| 久久狠狠婷婷| 国产精品一区二区三区久久久| 亚洲精品色图| 亚洲欧洲精品一区二区三区 | 欧美顶级艳妇交换群宴| 国产午夜精品理论片a级探花| 99成人精品| 在线综合亚洲欧美在线视频| 欧美91福利在线观看| 蜜桃久久av| 国产一区二区三区直播精品电影| 日韩天天综合| 一本色道久久综合亚洲精品不卡| 欧美高清在线视频| 91久久在线| 中文网丁香综合网| 欧美日韩一区成人| 一区二区国产在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 国产一区在线看| 午夜亚洲精品| 久久精品国产第一区二区三区最新章节 | 欧美日韩在线观看一区二区| 亚洲激情视频| 日韩视频一区二区在线观看| 久久免费高清视频| 欧美激情视频一区二区三区不卡| 亚洲国产日韩美| 欧美激情精品久久久久久免费印度| 欧美福利在线| 日韩视频在线你懂得| 欧美视频在线一区二区三区| 亚洲一级黄色| 久久一区视频| 欧美fxxxxxx另类| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲国产99| 一区二区三区免费网站| 欧美日韩一区三区四区| 亚洲欧美日韩国产中文在线| 久久综合伊人77777| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美另类中文字幕| 老司机aⅴ在线精品导航| 亚洲精品视频免费观看| 国产精品成人va在线观看| 午夜视频一区在线观看| 亚洲第一在线综合在线| 亚洲女同精品视频| 亚洲第一综合天堂另类专| 国产精品白丝黑袜喷水久久久| 性色av一区二区怡红| 亚洲国产女人aaa毛片在线| 午夜精品理论片| 亚洲青色在线| 狠狠色2019综合网| 欧美色另类天堂2015| 久久久久久一区| 一区二区高清视频| 欧美国产精品va在线观看| 先锋影音国产精品| 亚洲精品中文字幕在线| 国产自产高清不卡| 国产精品久久久久av免费| 欧美成人有码| 久久久久久亚洲精品杨幂换脸 | 欧美一级网站| 日韩写真视频在线观看| 黄色精品免费| 国产精品第13页| 欧美精品粉嫩高潮一区二区 | 日韩视频免费在线观看| 一区二区在线免费观看| 久久人人97超碰国产公开结果| 日韩天天综合| 免费成人在线视频网站|