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

???? 不想麻煩聲明函數,所以把實現寫到頭文件中了,只剩下一個cpp文件main.cpp.
??? 本程序實現了深度優先搜索非遞歸算法和單源最短路徑Bellman_Ford算法;
??? DFS用非遞歸效率高,因為輸入規模太大,遞歸讓我電腦吃不消,
?? Bellman_Ford算法可以處理負權值圖,這點比Dijkstra算法好.


1/******************************************
2?程序名稱:DFS和Bellman_Ford算法的實現
3?作者:pengkuny
4?主頁:http://m.shnenglu.com/pengkuny
5?郵箱:pengkuny@163.com
6?參考書籍:<<Introduction?to?Agrithms>>
7?完成日期:2006.11.30
8******************************************/


ALGraph.h

?1/*?ALGraph.h?圖的鄰接表存儲表示?*/
?2#ifndef?ALGRAPH_H
?3#define?ALGRAPH_H
?4
?5#include<iostream>
?6#include<cstdio>
?7#include<cmath>
?8#include<cstring>
?9
10using?namespace?std;
11
12#define?wuqiong?65535??????//初始權值無窮大
13
14typedef?enum?{WHITE,GRAY,BLACK};
15
16typedef?struct?VNode?VNode;
17
18typedef?struct?ArcNode
19{
20????int?????????adjvex;??/*?原頂點?*/
21????ArcNode*????next;????/*?指向下一條弧的指針?*/
22????long????????weight;??/*?權值?*/
23}
ArcNode;????????????????????/*?表結點?*/
24
25
26typedef?struct?VNode
27{????
28????int????????adjvex;???????????/*?頂點序號????*/
29????int???????????color;????????????/*?頂點顏色????*/
30????long????????d;???????????????/*?頂點最初DFS發現時間?;?兼作Dijkstra算法中當前最短路徑?*/
31????long????????f;???????????????/*?頂點最終DFS結束時間?*/
32????VNode?*?????father;
33????ArcNode?*???next;?????????/*?第一個表結點的地址,指向第一條依附該頂點的弧的指針?*/
34}
VNode,*?AdjList?;?/*?頭結點?*/
35
36
37typedef?struct
38{
39????AdjList?vertices;????????????????/*?表結點指針(一個頭結點數組)?*/
40????int?????vexnum,arcnum;???????????/*?圖的當前頂點數和弧數?*/
41}
ALGraph;
42??
43
44#endif//ALGRAPH_H


Stack.h: 棧的表示,DFS使用棧非遞歸
?1/*?Stack.h?圖的鄰接表存儲表示?*/
?2#ifndef?STACK_H
?3#define?STACK_H
?4
?5#include?"ALGraph.h"
?6
?7#include<iostream>
?8#include<cstdio>
?9#include<cmath>
10#include<cstring>
11
12using?namespace?std;
13
14typedef?struct??LinkList
15{
16????VNode?*??data;????//棧中只保存圖頂點指針
17????LinkList?*?next;??//下一個頂點
18}
LinkList;
19
20typedef?struct??Stack
21{
22????LinkList?*?top;
23}
Stack;
24
25
26void?InitStack(Stack?&S)
27{
28????S.top?=?NULL;
29}

30
31bool?Empty(Stack?S)
32{
33????if?(S.top?==?NULL)
34????{
35????????return?true;
36????}

37????return?false;
38}

39
40void?Push(Stack?&S,?VNode*?k)
41{
42
43????LinkList?*?p?=?new?LinkList;
44????p->data?=?k;
45????p->next?=?S.top;
46????S.top?=?p;
47}

48
49VNode*?GetTop(Stack&?S)
50{
51????return?S.top->data;
52}

53
54VNode*?Pop(Stack&?S)
55{
56????LinkList*?p?=?S.top;//保存棧頂指針
57????VNode*?q;
58????if(Empty(S))
59????{
60????????cout<<"Stack?underflow.";??//下溢
61????????exit(1);
62????}

63
64????S.top?=?p->next;??//將棧頂結點從鏈上摘下
65
66????q?=?p->data;//回收棧空間,不可以寫成q=p;delete?p;return?q->data;
67????delete?p;???//因為delete?p之后,p所指的空間已不可用
68
69????return?q;
70}

71
72
73#endif//STACK_H

CTimer.h:CTimer類,計時功能,單位毫秒
?1#ifndef?CTIMER_H
?2#define?CTIMER_H
?3
?4#include?"Windows.h"
?5
?6class???CTimer???
?7{???
?8public:???
?9????CTimer()?
10????{
11????????QueryPerformanceFrequency(&m_Frequency);//取CPU頻率
12????}
???
13????void?Start()
14????{
15????????QueryPerformanceCounter(&m_StartCount);//開始計數
16????}
???
17????double?End()?
18????{
19????????LARGE_INTEGER???CurrentCount;
20????????QueryPerformanceCounter(&CurrentCount);//終止計數
21????????return?
22????????????double(CurrentCount.QuadPart-m_StartCount.QuadPart)*1000/(double)m_Frequency.QuadPart;
23????????
24????}
???
25private:???
26????LARGE_INTEGER???m_Frequency;???
27????LARGE_INTEGER???m_StartCount;???
28}
;
29
30#endif//CTIMER_H???

CreateALGraph.h: 創建鄰接圖G
??1#include?"ALGraph.h"
??2
??3void?CreateALGraph(ALGraph&?G,long?vexnum,?long?arcnum)
??4{
??5????int?i,j,m,n;
??6????bool?flag?=?false;//檢查邊是否已存在
??7????int?*?weight?=?new?int[arcnum];
??8????for(i?=?0;?i?<?G.arcnum;?i++)
??9????{
?10????????weight[i]?=?0;??//初始權值為零????
?11????}

?12
?13????AdjList?vertices?=?new?VNode[vexnum]?;?//動態分配頭結點數組
?14????ArcNode*?p?=?NULL;?
?15????ArcNode*?q?=?NULL;?
?16????srand(NULL);
?17????
?18????G.vexnum?=?vexnum;
?19????G.arcnum?=?arcnum;
?20????for(i=0;?i<G.vexnum;?i++)
?21????{
?22????????vertices[i].adjvex?=?i;?????//?頂點序號
?23????????vertices[i].color?=?WHITE;??//?頂點顏色???
?24????????vertices[i].d?=?0;???//?頂點最初DFS發現時間?;?兼作Bellman_Ford算法中當前最短路徑?
?25????????vertices[i].f?=?0;??????????//?頂點最終DFS結束時間?
?26????????vertices[i].father?=?NULL;??//訪問路徑上的父結點
?27????????vertices[i].next?=?NULL;????//表結點指針,叫做firstarc似乎更合適,也更好控制,懶得改了
?28????}

?29????G.vertices?=?vertices;
?30????
?31????
?32????for(i?=?0;?i?<?G.arcnum;?i++)//隨機產生arcnum條邊
?33????{
?34????????weight[i]?=?rand()%1000?;//-?200;?//適當加一些負權值邊
?35????????if?(weight[i]?==?0)
?36????????{
?37????????????weight[i]++;//不能讓權值為零,否則等于沒有添加邊
?38????????}

?39????}

?40????
?41????for(i?=?0;?i?<?G.arcnum;?i++)//打亂數組
?42????{?
?43????????j?=?rand()%G.arcnum?;//隨機選取數組下標,注意整除的是數組大小
?44????????if?(j>=0?&&?j<G.arcnum)?
?45????????{
?46????????????int?exchange=weight[i];
?47????????????weight[i]=weight[j];
?48????????????weight[j]=exchange;????
?49????????}

?50????}

?51????
?52????
?53????i?=?0;
?54????j?=?0;
?55????while?(2*i+1?<?G.vexnum)//先將V-1條邊分配,為保證圖是連通的,按完全二叉樹結構產生邊
?56????????//當然這樣產生的邊不夠隨機性
?57????{???????????
?58????????p?=?new?ArcNode;????
?59????????p->adjvex?=?2*i+1;
?60????????p->weight?=?weight[j++];
?61????????p->next?=?NULL;???????????
?62????????G.vertices[i].next?=?p;//k尚無鄰接點,p作為第一個鄰接點
?63????????
?64????????if?(2*i+2?<?G.vexnum)
?65????????{
?66????????????q?=?p;
?67????????????p->next?=?new?ArcNode;//動態分配表結點
?68????????????p?=?p->next;
?69????????????p->adjvex?=?2*i+2;
?70????????????p->weight?=?weight[j++];
?71????????????p->next?=?NULL;
?72????????????G.vertices[i].next->next?=?p;
?73????????}

?74????????else
?75????????????break;//V-1條邊分配完畢
?76????????
?77????????i++;
?78????}

?79????
?80????
?81????for(i?=?G.vexnum-1;?i?<?G.arcnum;?)//將剩下的邊分配出去
?82????{
?83????????flag?=?false;
?84????????
?85????????m?=?rand()%G.vexnum;?//隨機弧尾序號
?86????????n?=?rand()%G.vexnum;?//隨機弧頭序號
?87????????while?(m?==?n)???????//不考慮指向自身的結點
?88????????{
?89????????????n?=?rand()%G.vexnum;
?90????????}

?91????????
?92????????if?(G.vertices[m].next?!=?NULL)????????????
?93????????{
?94????????????p?=?G.vertices[m].next;
?95????????}

?96????????else??//k尚無鄰接點
?97????????{
?98????????????p?=?NULL;
?99????????????q?=?NULL;
100????????}

101????????
102????????while?(p?!=?NULL)
103????????{
104????????????if?(p->adjvex?==?n)
105????????????{
106????????????????flag?=?true;//邊已經存在
107????????????????break;
108????????????}

109????????????else//繼續往下找
110????????????{
111????????????????q?=?p;
112????????????????p?=?p->next;
113????????????}

114????????}

115????????
116????????if?(!flag)//Vm→Vn的邊本不存在
117????????{
118????????????p?=?new?ArcNode;
119????????????
120????????????p->adjvex?=?n;
121????????????p->weight?=?weight[i];
122????????????p->next?=?NULL;
123????????????if?(q!=NULL)?
124????????????{
125????????????????q->next?=?p;
126????????????}

127????????????else
128????????????????G.vertices[m].next?=?p;
129????????????
130????????????i++;//僅當成功分配一條邊才i++;?本循環存在死循環的可能,即永遠碰巧都分配不出去
131????????????//考慮復雜度和出錯的概率,姑且不管它.
132????????}

133????}

134
135????delete?[]?weight;
136}

137
138
139
140void?ShowGraph(ALGraph?G)???//打印創建后的圖
141{
142????for(int?i=0;?i<G.vexnum;?i++)
143????{
144????????ArcNode?*?p?=?G.vertices[i].next;
145????????cout<<"source?V"<<G.vertices[i].adjvex<<":";
146????????while(p!=NULL)
147????????{
148????????????cout<<"??V"<<p->adjvex;
149????????????cout<<"(w:?"<<p->weight<<")";
150????????????p=p->next;
151????????}

152????????cout<<endl;
153
154????}

155}


ClearUp.h: 銷毀圖G,回收工作
?1#include?"ALGraph.h"
?2
?3void?ClearUp(ALGraph?&G)//銷毀圖G
?4{
?5????ArcNode*?p?=?NULL;????
?6????ArcNode*?q?=?NULL;
?7????int?i;
?8????for(i=0;?i<G.vexnum;?i++)??//回收表結點
?9????{????
10????????p?=?G.vertices[i].next;
11????????while?(p?!=?NULL)?
12????????{
13????????????q?=?p->next;
14????????????delete?p;
15????????????p?=?q;????????????
16????????}

17????}

18
19????delete?[]?G.vertices;?????//回收頭結點
20????G.vertices?=?NULL;
21????G.arcnum?=?0;
22????G.vexnum?=?0;
23}


DFS.h: 深度優先遍歷
?1#include?"ALGraph.h"
?2#include?"Stack.h"
?3
?4void?DFSVisit(ALGraph&?G,?VNode&?s,?int&?time);
?5
?6void?DFS(ALGraph&?G)
?7{
?8????int?time?=?0;????
?9????for(int?i=0;?i<G.vexnum;?i++)??//初始化
10????{
11????????G.vertices[i].color?=?WHITE;
12????????G.vertices[i].father?=?NULL;
13????}

14????
15????for(i=0;?i<G.vexnum;?i++)?????//深度優先遍歷
16????{
17????????if?(G.vertices[i].color?==?WHITE)?
18????????????DFSVisit(G,?G.vertices[i],?time);
19????}

20}

21
22void?DFSVisit(ALGraph&?G,?VNode&?s,?int&?time)??/*從s出發深度優先搜索圖G*/
23{
24????Stack?S;
25????ArcNode?*?p;?
26????VNode*?k;//出棧頂點序號
27????VNode*?t;
28????
29????InitStack(S);??/*初始化空棧*/
30????
31????s.color?=?GRAY;
32????time?=?time?+1;
33????s.d?=?time;
34????Push(S,?&s);?
35????while(!Empty(S))
36????{?
37????????t?=?GetTop(S);??//彈出棧頂,返回棧頂元素地址
38
39????????for(p=t->next;?p?&&?G.vertices[p->adjvex].color!=WHITE;?p=p->next);
40????????//找到第一個白色鄰接點
41????????if(p?==?NULL)//t的所有鄰接點都已訪問
42????????{
43????????????k?=?Pop(S);
44????????????k->color?=?BLACK;
45????????????time?=?time+1;
46????????????k->f?=?time;//結束時間
47????????}

48????????else//繼續深度訪問
49????????{
50????????????Push(S,&G.vertices[p->adjvex]);
51????????????G.vertices[p->adjvex].father?=?t;
52????????????G.vertices[p->adjvex].color?=?GRAY;
53????????????time?=?time+1;
54????????????G.vertices[p->adjvex].d?=?time;//入棧之時即發現之時d
55????????}

56????}

57}

Bellman_Ford算法
?1#include?"ALGraph.h"
?2
?3void?Initialize_Single_Source(ALGraph&?G,VNode&?s)//初始化
?4{
?5????for(int?i=0;?i<G.vexnum;?i++)
?6????{
?7????????G.vertices[i].father?=?NULL;
?8????????G.vertices[i].d?=?wuqiong;????
?9????}

10????s.d?=?0;
11}

12
13void?Relax(VNode&?v,?VNode&?w,?ArcNode?*?p)//Relax操作,更新最短路徑
14{
15????if?(w.d?>?v.d+?p->weight)
16????{
17????????w.d?=?v.d+?p->weight;
18????????w.father?=?&v;
19????}

20}

21
22bool?Bellman_Ford(ALGraph&?G,?VNode&?s)
23{
24????ArcNode?*?p;
25????int?i;
26????
27????Initialize_Single_Source(G,?s);
28
29????for?(int?j=0;?j<G.vexnum-1;?j++)//V-1趟Relax
30????{
31????????for(i=0;?i<G.vexnum;?i++)//沿著頭結點
32????????{
33????????????for?(p=G.vertices[i].next;?p!=NULL;?p=p->next)//沿著表結點
34????????????{????????????
35????????????????Relax(G.vertices[i],?G.vertices[p->adjvex],?p);
36????????????}

37????????}

38????}

39
40????//判斷是否有負回路
41????for(i=0;?i<G.vexnum;?i++)//沿著頭結點
42????{
43????????for?(p=G.vertices[i].next;?p!=NULL;?p=p->next)//沿著表結點
44????????{
45????????????if?(G.vertices[p->adjvex].d?>?G.vertices[i].d+?p->weight)?
46????????????{
47????????????????cout<<"圖中有負權值回路."<<endl;
48????????????????return?false;
49????????????}

50????????}

51????}

52
53????return?true;????????????????
54}

55
56void?PrintPath(ALGraph?G,?VNode?s,?VNode?v)//遞歸打印最短路徑
57{????
58????if?(v.father?!=?NULL)
59????{
60????????PrintPath(G,?s,?*v.father);
61????????cout<<"v"<<v.adjvex<<"";
62????}

63????else
64????????cout<<"v"<<s.adjvex<<"";????
65}

66
67void?ShortestPath(ALGraph?G,?VNode?s)
68{
69????int?i=0;
70????cout<<"頂點為v0,v1,v2,……,v"<<G.vexnum-1<<endl;
71????cout<<"從源點v"<<s.adjvex<<"到其它所有頂點的最短距離:"<<endl;
72????for(i=0;?i<G.vexnum;?i++)//沿著頭結點
73????{
74????????cout<<"到頂點v"<<i<<":??";
75????????PrintPath(G,?s,?G.vertices[i]);
76????????cout<<endl;
77????}

78}

79
80void?DFSPath(ALGraph?G,?VNode?s)//打印DFS各頂點的發現時間和結束時間d/f;
81{
82????int?i=0;
83????for(i=0;?i<G.vexnum;?i++)//沿著頭結點
84????{
85????????//PrintPath(G,?s,?*k);
86????????cout<<"v"<<G.vertices[i].adjvex<<":"<<G.vertices[i].d<<"?/?"
87????????????<<G.vertices[i].f<<"??顏色:"<<G.vertices[i].color;
88????????cout<<endl;
89????}

90}



main函數:對不同輸入規模計時分析算法性能
?1#include?"ALGraph.h"
?2#include?"DFS.h"
?3#include?"CreateALGraph.h"
?4#include?"Bellman_Ford.h"
?5#include?"ClearUp.h"
?6#include?"CTimer.h"
?7
?8#include<iostream>
?9#include<cstdio>
10#include<cmath>
11#include<cstring>
12
13
14int?main()
15
16{
17????//輸入規模
18????const?int?NUM1[6]?=?{1000,2500,5000,7500,10000,15000};
19????const?int?RATE1[4]?=?{pow(2,2),pow(2,4),pow(2,6),pow(2,8)};
20????const?int?NUM2[6]?=?{200,400,800,1200,1600,2000};
21????const?int?RATE2[5]?=?{pow(2,2),pow(2,3),pow(2,4),pow(2,5),pow(2,6)};
22????
23????ALGraph?G;??????????//圖G
24????CTimer?timer;???????//計數器
25????int?i,j;?????????
26????double?runningtime;?//運行時間(毫秒/ms)
27????long?vexnum;????????//圖頂點數
28????long?arcnum;????????//圖邊數
29????
30????for(i=0;?i<6;?i++)//DFS運行時間分析
31????{????
32????????cout<<"/********************************/"<<endl;
33????????for(j=0;j<4;?j++)
34????????{
35????????????vexnum?=?NUM1[i];
36????????????arcnum?=?NUM1[i]*RATE1[j];
37????????????CreateALGraph(G,?vexnum,?arcnum);//創建圖
38????????????timer.Start();?????????????//計時開始
39????????????DFS(G);????????????
40????????????runningtime?=?timer.End();//計時結束
41????????????cout<<"????"<<runningtime<<"ms"<<endl;???????????????
42//????????????DFSPath(G,?*G.vertices);
43????????????ClearUp(G);
44????????}
????
45????}

46????
47????for(i=0;?i<6;?i++)//Bellman_Ford最短路徑算法運行時間分析
48????{????
49????????cout<<"/********************************/"<<endl;????????
50????????for(j=0;j<5;?j++)????????{
51????????????vexnum?=?NUM2[i];
52????????????arcnum?=?NUM2[i]*RATE2[j];
53????????????CreateALGraph(G,?vexnum,?arcnum);
54//????????????ShowGraph(G);??????????????//打印原始圖
55????????????timer.Start();?????????????//計時開始
56????????????Bellman_Ford(G,?*G.vertices);
57????????????runningtime?=?timer.End();//計時結束
58????????????cout<<"????"<<runningtime<<"ms"<<endl;
59//????????????ShortestPath(G,?*G.vertices);//打印源點v0到各頂點的最短路徑
60????????????ClearUp(G);
61????????}

62????}

63????
64????
65????return?0;
66}
posted on 2006-12-02 10:34 哈哈 閱讀(1585) 評論(2)  編輯 收藏 引用

評論:
# re: DFS和Bellman_Ford算法的代碼實現 2008-07-20 16:24 | woer
Bellman里面如果圖是不聯通的呢?
這個都沒有處理  回復  更多評論
  
# re: DFS和Bellman_Ford算法的代碼實現 2009-02-17 22:01 | yangtao
good!  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美人交a欧美精品| 久久久www成人免费无遮挡大片| 欧美日韩精品一区二区在线播放| 久久久久久久久久久一区| 久久久久久久久久看片| 欧美激情久久久久| 欧美风情在线观看| 欧美日韩免费在线| 国产精品xnxxcom| 国产精品视频免费观看www| 国产午夜精品麻豆| 亚洲成人在线免费| 亚洲人午夜精品免费| 亚洲一区尤物| 久久精品在线免费观看| 免费毛片一区二区三区久久久| 免费久久99精品国产自| 99re6这里只有精品| 亚洲欧美一级二级三级| 嫩草影视亚洲| 国产精品乱看| 亚洲黄色一区| 欧美一区2区三区4区公司二百| 久久亚洲精品视频| 日韩性生活视频| 久久国产精品高清| 欧美午夜不卡影院在线观看完整版免费| 国产欧美日韩亚洲| 99国产成+人+综合+亚洲欧美| 欧美一级淫片播放口| 亚洲国产三级网| 亚洲午夜精品一区二区| 久久永久免费| 国产日本欧美一区二区三区在线| 一区在线观看视频| 亚洲欧美在线aaa| 91久久久国产精品| 久久久水蜜桃| 国产色综合久久| 亚洲一区二区三区高清不卡| 美女网站久久| 欧美一区二区三区视频| 欧美午夜电影在线| 9l视频自拍蝌蚪9l视频成人| 欧美成人乱码一区二区三区| 亚洲欧美国产精品专区久久| 欧美理论在线| 亚洲久久在线| 欧美韩日一区| 免费视频一区| 亚洲高清不卡一区| 免费在线观看精品| 性色一区二区| 国产免费亚洲高清| 欧美一区二区三区日韩| 99综合精品| 欧美高清视频一区二区| 亚洲激情视频在线观看| 免费一级欧美片在线播放| 亚洲女性裸体视频| 欧美电影免费观看高清完整版| 亚洲国产欧美精品| 一本久道久久综合婷婷鲸鱼| 久久人人97超碰人人澡爱香蕉| 日韩午夜一区| 国产精品视频99| 性久久久久久久久| 亚洲欧美日韩在线播放| 国产日韩一区二区三区在线| 欧美伊人久久| 久久精品最新地址| 亚洲日本在线观看| 亚洲美女在线看| 国产精品久久久久久一区二区三区| 亚洲欧美日韩国产精品| 欧美一区2区三区4区公司二百| 国模精品一区二区三区| 久久婷婷国产综合精品青草| 久久综合狠狠综合久久激情| 亚洲人成在线播放网站岛国| av72成人在线| 国产有码在线一区二区视频| 免费视频最近日韩| 欧美日韩国产高清| 久久www成人_看片免费不卡| 久久久国产视频91| 一二美女精品欧洲| 欧美一二三区在线观看| 尹人成人综合网| 亚洲伦理在线免费看| 国产精品综合色区在线观看| 欧美不卡视频一区发布| 欧美三级乱人伦电影| 乱中年女人伦av一区二区| 欧美日韩在线一区二区三区| 麻豆精品在线播放| 国产精品久久久久久久第一福利| 久久亚洲精品网站| 国产精品户外野外| 亚洲第一福利社区| 国产精品综合视频| 亚洲精品日韩激情在线电影| 国产亚洲精久久久久久| 亚洲精品日韩久久| 亚洲东热激情| 午夜伦理片一区| 夜色激情一区二区| 久久综合亚州| 久久精品动漫| 欧美性理论片在线观看片免费| 麻豆精品在线播放| 国产亚洲欧洲| 亚洲欧美日本日韩| 亚洲特级片在线| 欧美精品v国产精品v日韩精品| 久久久久久久欧美精品| 国产伦精品一区二区三区照片91 | 久久不见久久见免费视频1| avtt综合网| 一区二区高清在线| 亚洲久久一区二区| 在线观看欧美日本| 亚洲一区二区黄色| 一区二区三区免费观看| 免费成年人欧美视频| 久久欧美肥婆一二区| 国产精品视区| 亚洲图片在线观看| 亚洲午夜精品17c| 欧美激情一区二区三区成人| 女同性一区二区三区人了人一 | 1000精品久久久久久久久| 亚洲天堂第二页| 制服诱惑一区二区| 欧美精品在线免费| 亚洲日韩欧美视频| 日韩一区二区精品葵司在线| 久久噜噜噜精品国产亚洲综合| 久久精品一本久久99精品| 国产毛片精品视频| 亚洲欧美在线免费观看| 欧美伊人久久| 韩国av一区二区三区四区| 欧美影院午夜播放| 久久久噜噜噜久久久| 国产在线观看精品一区二区三区 | 久久精品日韩一区二区三区| 欧美专区18| 国产在线欧美日韩| 久久久久国色av免费观看性色| 老牛影视一区二区三区| 亚洲大片在线观看| 欧美黄色影院| 99热免费精品| 香蕉久久国产| 国内偷自视频区视频综合| 久久精品日产第一区二区| 欧美电影免费网站| 中文国产成人精品久久一| 国产精品嫩草影院av蜜臀| 午夜久久久久久| 欧美国产视频日韩| 亚洲视屏在线播放| 国产精品资源在线观看| 久久综合狠狠综合久久激情| 91久久午夜| 性欧美xxxx视频在线观看| 韩国在线视频一区| 欧美精品18| 久久精品国产精品亚洲| 91久久夜色精品国产网站| 午夜精品久久久久久99热| 在线成人av网站| 欧美性猛交99久久久久99按摩| 久久精品国产欧美亚洲人人爽| 亚洲国产欧美一区二区三区久久 | 久久久天天操| 一本大道av伊人久久综合| 国产日韩欧美在线观看| 欧美激情按摩| 欧美在线中文字幕| 亚洲美女性视频| 亚洲综合精品四区| 欧美va天堂| 亚洲特级片在线| 影音先锋亚洲电影| 国产精品欧美在线| 女女同性女同一区二区三区91| 日韩视频精品在线| 美日韩精品视频| 欧美一区二区成人6969| 日韩亚洲欧美综合| 亚洲二区三区四区| 国产一在线精品一区在线观看| 欧美日韩亚洲一区二区三区在线| 久久久精品五月天| 亚洲一区二区三区精品动漫| 亚洲欧洲另类| 免费成人黄色片| 久久久999精品免费|