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

coreBugZJ

此 blog 已棄。

EOJ 1780 Escape

/*
EOJ 1780 Escape


----問(wèn)題描述:

You find yourself trapped in a large rectangular room, made up of large square tiles; some
are accessible, others are blocked by obstacles or walls. With a single step, you can move
from one tile to another tile if it is horizontally or vertically adjacent (i.e. you cannot move
diagonally).
To shake off any people following you, you do not want to move in a straight line. In fact,
you want to take a turn at every opportunity, never moving in any single direction longer
than strictly necessary. This means that if, for example, you enter a tile from the south,
you will turn either left or right, leaving to the west or the east. Only if both directions
are blocked, will you move on straight ahead. You never turn around and go back!
Given a map of the room and your starting location, figure out how long it will take you
to escape (that is: reach the edge of the room).


----輸入:

On the first line an integer t (1 <= t <= 100): the number of test cases. Then for each test
case:
1. a line with two integers separated by a space, h and w (1 <= h,w <= 80), the height
and width of the room;
2. then h lines, each containing w characters, describing the room. Each character is one
of . (period; an accessible space), # (a blocked space) or @ (your starting location).
There will be exactly one @ character in each room description.


----輸出:

For each test case:
1. A line with an integer: the minimal number of steps necessary to reach the edge of
the room, or -1 if no escape is possible.


----樣例輸入:

2
9 13
#############
#@.#
#####.#.#.#.#
#..#
#.#.#.#.#.#.#
#.#.#.#
#.#.#.#.#.#.#
#..#
#####.#######
4 6
#.####
#.#.##
#@#
######


----樣例輸出:

31
-1


----分析:

搜索即可,只是注意擴(kuò)展方式,左或右可以時(shí),不可向前。

*/




/**********************************************************
版本五:
AC 0MS
SPFA 求最短路。
出口不止一個(gè),邊界上的可達(dá)點(diǎn)都是出口。
*/


#include 
<stdio.h>
#include 
<string.h>


#define  L    89
#define  INF  0x3f3f3f3f

#define  CAN   '.'


#define  T  4
int di[] = -1010 };
int dj[] = 010-1 };


int  h, w;
int  srcI, srcJ, dstI, dstJ;
char map[ L ][ L ];

int spfa() {
#define  QL  (L*L*T)
        
static int queI[ QL ], queJ[ QL ], queD[ QL ], inq[ L ][ L ][ T ], dist[ L ][ L ][ T ];
        
int qh = 0, qt = 0, i, j, d, chg, ni, nj, nd, ans;
        memset( dist, 
0x3fsizeof(dist) );
        memset( inq,  
0,    sizeof(inq)  );
        
for ( i = 0; i < T; ++i ) {
                queI[ qt ] 
= srcI;
                queJ[ qt ] 
= srcJ;
                queD[ qt ] 
= i;
                inq[ srcI ][ srcJ ][ i ] 
= 1;
                dist[ srcI ][ srcJ ][ i ] 
= 0;
                qt 
= (qt + 1% QL;
        }

        
while ( qh != qt ) {
                i 
= queI[ qh ];
                j 
= queJ[ qh ];
                d 
= queD[ qh ];
                inq[ i ][ j ][ d ] 
= 0;
                qh 
= (qh + 1% QL;

                chg 
= 0;

#define  UPDATE if ( dist[ i ][ j ][ d ] + 1 < dist[ ni ][ nj ][ nd ] ) { \
                        dist[ ni ][ nj ][ nd ] 
= dist[ i ][ j ][ d ] + 1; \
                        
if ( ! inq[ ni ][ nj ][ nd ] ) { \
                                inq[ ni ][ nj ][ nd ] 
= 1; \
                                queI[ qt ] 
= ni; \
                                queJ[ qt ] 
= nj; \
                                queD[ qt ] 
= nd; \
                                qt 
= (qt + 1% QL; \
                        }
 \
                }

                
#define  MOD    ni = i + di[ nd ]; \
                nj 
= j + dj[ nd ]; \
                
if ( CAN == map[ ni ][ nj ] ) { \
                        chg 
= 1; \
                        UPDATE \
                }


                nd 
= (d + 1% T;
                MOD

                nd 
= (d + T - 1% T;
                MOD

                
if ( 0 == chg ) {
                        nd 
= d;
                        MOD
                }

        }


#define  UPANS \
        
for ( d = 0; d < T; ++d ) { \
                
if ( ans > dist[ dstI ][ dstJ ][ d ] ) { \
                        ans 
= dist[ dstI ][ dstJ ][ d ]; \
                }
 \
        }


        ans 
= INF;
        
for ( j = 1; j <= w; ++j ) {
                
if ( '.' == map[ 1 ][ j ] ) {
                        dstI 
= 1;
                        dstJ 
= j;
                        UPANS
                }

                
if ( '.' == map[ h ][ j ] ) {
                        dstI 
= h;
                        dstJ 
= j;
                        UPANS
                }

        }

        
for ( i = 1; i <= h; ++i ) {
                
if ( '.' == map[ i ][ 1 ] ) {
                        dstI 
= i;
                        dstJ 
= 1;
                        UPANS
                }

                
if ( '.' == map[ i ][ w ] ) {
                        dstI 
= i;
                        dstJ 
= w;
                        UPANS
                }

        }


        
if ( INF == ans ) {
                ans 
= -1;
        }

        
return ans;
}

int main() {
        
int td;
        
int i, j;
        scanf( 
"%d"&td );
        
while ( td-- > 0 ) {
                scanf( 
"%d%d"&h, &w );
                gets( map[ 
0 ] );
                memset( map, 
'#'sizeof(map) );
                
for ( i = 1; i <= h; ++i ) {
                        gets( map[ i ] 
+ 1 );
                        
for ( j = 1; j <= w; ++j ) {
                                
if ( '@' == map[ i ][ j ] ) {
                                        srcI 
= i;
                                        srcJ 
= j;
                                        map[ i ][ j ] 
= '.';
                                }

                        }

                }


                printf( 
"%d\n", spfa() );
        }

        
return 0;
}



/**********************************************************
版本四:
WA
發(fā)現(xiàn)之前對(duì) “You never turn around and go back!”理解有誤,只是不能后退而已。
寬度優(yōu)先搜索。

*/

/*
#include <stdio.h>
#include <string.h>


#define  L    89
#define  INF  0x3f3f3f3f

#define  CAN   '.'


#define  T  4
int di[] = { -1, 0, 1, 0 };
int dj[] = { 0, 1, 0, -1 };


int  h, w;
int  srcI, srcJ, dstI, dstJ;
char map[ L ][ L ];

int bfs() {
#define  QL  (L*L*T)
        static int queI[ QL ], queJ[ QL ], queD[ QL ], inq[ L ][ L ][ T ], dist[ L ][ L ][ T ];
        int qh = 0, qt = 0, i, j, d, chg, ni, nj, nd, ans;
        memset( dist, 0x3f, sizeof(dist) );
        memset( inq,  0,    sizeof(inq)  );
        i = srcI;
        j = srcJ;
        for ( nd = 0; nd < T; ++nd ) {
                ni = i + di[ nd ];
                nj = j + dj[ nd ];
                if ( CAN == map[ ni ][ nj ] ) {
                        queI[ qt ] = ni;
                        queJ[ qt ] = nj;
                        queD[ qt ] = nd;
                        inq[ ni ][ nj ][ nd ] = 1;
                        dist[ ni ][ nj ][ nd ] = 1;
                        ++qt;
                }
        }
        while ( qh != qt ) {
                i = queI[ qh ];
                j = queJ[ qh ];
                d = queD[ qh ];
                ++qh;

                chg = 0;

#define  UPDATE do { \
                        dist[ ni ][ nj ][ nd ] = dist[ i ][ j ][ d ] + 1; \
                        inq[ ni ][ nj ][ nd ] = 1; \
                        queI[ qt ] = ni; \
                        queJ[ qt ] = nj; \
                        queD[ qt ] = nd; \
                        ++qt; \
                } while (0)

#define  MOD    do { \
                        ni = i + di[ nd ]; \
                        nj = j + dj[ nd ]; \
                        if ( CAN == map[ni][nj] ) { \
                                chg = 1; \
                                if ( ! inq[ni][nj][nd] ) { \
                                        UPDATE; \
                                } \
                        } \
                } while (0)

                nd = (d + 1) % T;
                MOD;

                nd = (d + T - 1) % T;
                MOD;

                if ( 0 == chg ) {
                        nd = d;
                        MOD;
                }
        }

        ans = dist[ dstI ][ dstJ ][ 0 ];
        for ( d = 1; d < T; ++d ) {
                if ( ans > dist[ dstI ][ dstJ ][ d ] ) {
                        ans = dist[ dstI ][ dstJ ][ d ];
                }
        }
        if ( INF == ans ) {
                ans = -1;
        }
        return ans;
}

int solve() {
        if ( (srcI == dstI) && (srcJ == dstJ) ) {
                return 0;
        }
        return bfs();
}

int main() {
        int td;
        int i, j;
        scanf( "%d", &td );
        while ( td-- > 0 ) {
                scanf( "%d%d", &h, &w );
                gets( map[ 0 ] );
                memset( map, '#', sizeof(map) );
                for ( i = 1; i <= h; ++i ) {
                        gets( map[ i ] + 1 );
                        map[ i ][ w+1 ] = '#';
                        for ( j = 1; j <= w; ++j ) {
                                if ( '@' == map[ i ][ j ] ) {
                                        srcI = i;
                                        srcJ = j;
                                        map[ i ][ j ] = '.';
                                }
                        }
                }
                dstI = -1;
                for ( j = 1; (0 > dstI) && (j <= w); ++j ) {
                        if ( '.' == map[ 1 ][ j ] ) {
                                dstI = 1;
                                dstJ = j;
                        }
                        if ( '.' == map[ h ][ j ] ) {
                                dstI = h;
                                dstJ = j;
                        }
                }
                for ( i = 1; (0 > dstI) && (i <= h); ++i ) {
                        if ( '.' == map[ i ][ 1 ] ) {
                                dstI = i;
                                dstJ = 1;
                        }
                        if ( '.' == map[ i ][ w ] ) {
                                dstI = i;
                                dstJ = w;
                        }
                }

                printf( "%d\n", solve() );
        }
        return 0;
}
*/



/**********************************************************
版本三:
WA
SPFA 求最短路。
錯(cuò)誤“從目標(biāo)點(diǎn)可離開(kāi)地圖”修正。
*/

/*
#include <stdio.h>
#include <string.h>


#define  L    89
#define  INF  0x3f3f3f3f

#define  CAN   '.'


#define  T  4
int di[] = { -1, 0, 1, 0 };
int dj[] = { 0, 1, 0, -1 };


int  h, w;
int  srcI, srcJ, dstI, dstJ;
char map[ L ][ L ];

int spfa() {
#define  QL  (L*L*T)
        static int queI[ QL ], queJ[ QL ], queD[ QL ], inq[ L ][ L ][ T ], dist[ L ][ L ][ T ];
        int qh = 0, qt = 0, i, j, d, chg, ni, nj, nd, ans;
        memset( dist, 0x3f, sizeof(dist) );
        memset( inq,  0,    sizeof(inq)  );
        for ( i = 0; i < T; ++i ) {
                queI[ qt ] = srcI;
                queJ[ qt ] = srcJ;
                queD[ qt ] = i;
                inq[ srcI ][ srcJ ][ i ] = 1;
                dist[ srcI ][ srcJ ][ i ] = 0;
                qt = (qt + 1) % QL;
        }
        while ( qh != qt ) {
                i = queI[ qh ];
                j = queJ[ qh ];
                d = queD[ qh ];
                inq[ i ][ j ][ d ] = 0;
                qh = (qh + 1) % QL;

                chg = 0;

#define  UPDATE if ( dist[ i ][ j ][ d ] + 1 < dist[ ni ][ nj ][ nd ] ) { \
                        dist[ ni ][ nj ][ nd ] = dist[ i ][ j ][ d ] + 1; \
                        if ( ! inq[ ni ][ nj ][ nd ] ) { \
                                inq[ ni ][ nj ][ nd ] = 1; \
                                queI[ qt ] = ni; \
                                queJ[ qt ] = nj; \
                                queD[ qt ] = nd; \
                                qt = (qt + 1) % QL; \
                        } \
                }
                
#define  MOD    ni = i + di[ nd ]; \
                nj = j + dj[ nd ]; \
                if ( CAN == map[ ni ][ nj ] ) { \
                        chg = 1; \
                        UPDATE \
                }

                nd = (d + 1) % T;
                MOD

                nd = (d + T - 1) % T;
                MOD

                if ( 0 == chg ) {
                        nd = d;
                        MOD
                }
        }

        ans = dist[ dstI ][ dstJ ][ 0 ];
        for ( d = 1; d < T; ++d ) {
                if ( ans > dist[ dstI ][ dstJ ][ d ] ) {
                        ans = dist[ dstI ][ dstJ ][ d ];
                }
        }
        if ( INF == ans ) {
                ans = -1;
        }
        return ans;
}

int main() {
        int td;
        int i, j;
        scanf( "%d", &td );
        while ( td-- > 0 ) {
                scanf( "%d%d", &h, &w );
                gets( map[ 0 ] );
                memset( map, '#', sizeof(map) );
                for ( i = 1; i <= h; ++i ) {
                        gets( map[ i ] + 1 );
                        for ( j = 1; j <= w; ++j ) {
                                if ( '@' == map[ i ][ j ] ) {
                                        srcI = i;
                                        srcJ = j;
                                        map[ i ][ j ] = '.';
                                }
                        }
                }
                dstI = -1;
                for ( j = 1; (0 > dstI) && (j <= w); ++j ) {
                        if ( '.' == map[ 1 ][ j ] ) {
                                dstI = 1;
                                dstJ = j;
                        }
                        if ( '.' == map[ h ][ j ] ) {
                                dstI = h;
                                dstJ = j;
                        }
                }
                for ( i = 1; (0 > dstI) && (i <= h); ++i ) {
                        if ( '.' == map[ i ][ 1 ] ) {
                                dstI = i;
                                dstJ = 1;
                        }
                        if ( '.' == map[ i ][ w ] ) {
                                dstI = i;
                                dstJ = w;
                        }
                }

                printf( "%d\n", spfa() );
        }
        return 0;
}
*/



/**********************************************************
版本二:
WA
SPFA 求最短路。
*/

/*
#include <stdio.h>
#include <string.h>


#define  L    89
#define  INF  0x3f3f3f3f

#define  CAN   '.'


#define  T  4
int di[] = { -1, 0, 1, 0 };
int dj[] = { 0, 1, 0, -1 };


int  h, w;
int  srcI, srcJ, dstI, dstJ;
char map[ L ][ L ];

int spfa() {
#define  QL  (L*L*T)
        static int queI[ QL ], queJ[ QL ], queD[ QL ], inq[ L ][ L ][ T ], dist[ L ][ L ][ T ];
        int qh = 0, qt = 0, i, j, d, chg, ni, nj, nd, ans;
        memset( dist, 0x3f, sizeof(dist) );
        memset( inq,  0,    sizeof(inq)  );
        for ( i = 0; i < T; ++i ) {
                queI[ qt ] = srcI;
                queJ[ qt ] = srcJ;
                queD[ qt ] = i;
                inq[ srcI ][ srcJ ][ i ] = 1;
                dist[ srcI ][ srcJ ][ i ] = 0;
                qt = (qt + 1) % QL;
        }
        while ( qh != qt ) {
                i = queI[ qh ];
                j = queJ[ qh ];
                d = queD[ qh ];
                inq[ i ][ j ][ d ] = 0;
                qh = (qh + 1) % QL;

                chg = 0;

#define  UPDATE if ( dist[ i ][ j ][ d ] + 1 < dist[ ni ][ nj ][ nd ] ) { \
                        dist[ ni ][ nj ][ nd ] = dist[ i ][ j ][ d ] + 1; \
                        if ( ! inq[ ni ][ nj ][ nd ] ) { \
                                inq[ ni ][ nj ][ nd ] = 1; \
                                queI[ qt ] = ni; \
                                queJ[ qt ] = nj; \
                                queD[ qt ] = nd; \
                                qt = (qt + 1) % QL; \
                        } \
                }
                
#define  MOD    ni = i + di[ nd ]; \
                nj = j + dj[ nd ]; \
                if ( CAN == map[ ni ][ nj ] ) { \
                        chg = 1; \
                        UPDATE \
                }

                nd = (d + 1) % T;
                MOD

                nd = (d + T - 1) % T;
                MOD

                if ( 0 == chg ) {
                        nd = d;
                        MOD
                }
        }

        ans = dist[ dstI ][ dstJ ][ 0 ];
        for ( d = 1; d < T; ++d ) {
                if ( ans > dist[ dstI ][ dstJ ][ d ] ) {
                        ans = dist[ dstI ][ dstJ ][ d ];
                }
        }
        if ( INF == ans ) {
                ans = -1;
        }
        return ans;
}

int main() {
        int td;
        int i, j;
        scanf( "%d", &td );
        while ( td-- > 0 ) {
                scanf( "%d%d", &h, &w );
                gets( map[ 0 ] );
                for ( i = 0; i < h; ++i ) {
                        gets( map[ i ] );
                        for ( j = 0; j < w; ++j ) {
                                if ( '@' == map[ i ][ j ] ) {
                                        srcI = i;
                                        srcJ = j;
                                }
                        }
                }
                dstI = -1;
                for ( j = 0; (0 > dstI) && (j < w); ++j ) {
                        if ( '.' == map[ 0 ][ j ] ) {
                                dstI = 0;
                                dstJ = j;
                        }
                        if ( '.' == map[ h-1 ][ j ] ) {
                                dstI = h - 1;
                                dstJ = j;
                        }
                }
                for ( i = 0; (0 > dstI) && (i < h); ++i ) {
                        if ( '.' == map[ i ][ 0 ] ) {
                                dstI = i;
                                dstJ = 0;
                        }
                        if ( '.' == map[ i ][ w-1 ] ) {
                                dstI = i;
                                dstJ = w - 1;
                        }
                }

                printf( "%d\n", spfa() );
        }
        return 0;
}
*/




/**********************************************************
版本一:
TLE
DFS 窮舉所有,取最小值。
*/

/*
#include <stdio.h>
#include <string.h>


#define  L    89
#define  INF  0x3f3f3f3f

#define  CAN   '.'


#define  T  4
int di[] = { -1, 0, 1, 0 };
int dj[] = { 0, 1, 0, -1 };


int  h, w;
int  srcI, srcJ, dstI, dstJ;
char map[ L ][ L ];
int  ans, tmp;
int  walk[ L ][ L ];

void dfs( int i, int j, int dir ) {
        int ni, nj, chg = 0;
        if ( (walk[ i ][ j ]) || (tmp >= ans) ) {
                return;
        }
        if ((i == dstI) && (j == dstJ)) {
                if (tmp < ans) {
                        ans = tmp;
                }
                return;
        }
        walk[ i ][ j ] = 1;
        ++tmp;

        dir = (dir + 1) % T;
        ni = i + di[ dir ];
        nj = j + dj[ dir ];
        if ( CAN == map[ ni ][ nj ] ) {
                chg = 1;
                dfs( ni, nj, dir);
        }

        dir = (dir + T - 2) % T;
        ni = i + di[ dir ];
        nj = j + dj[ dir ];
        if ( CAN == map[ ni ][ nj ] ) {
                chg = 1;
                dfs( ni, nj, dir);
        }

        if ( 0 == chg ) {
                dir = (dir + 1) % T;
                ni = i + di[ dir ];
                nj = j + dj[ dir ];
                if ( CAN == map[ ni ][ nj ] ) {
                        dfs( ni, nj, dir);
                }
        }

        --tmp;
        walk[ i ][ j ] = 0;
}

int main() {
        int td;
        int i, j;
        scanf( "%d", &td );
        while ( td-- > 0 ) {
                scanf( "%d%d", &h, &w );
                gets( map[ 0 ] );
                for ( i = 0; i < h; ++i ) {
                        gets( map[ i ] );
                        for ( j = 0; j < w; ++j ) {
                                if ( '@' == map[ i ][ j ] ) {
                                        srcI = i;
                                        srcJ = j;
                                }
                        }
                }
                dstI = -1;
                for ( j = 0; (0 > dstI) && (j < w); ++j ) {
                        if ( '.' == map[ 0 ][ j ] ) {
                                dstI = 0;
                                dstJ = j;
                        }
                        if ( '.' == map[ h-1 ][ j ] ) {
                                dstI = h - 1;
                                dstJ = j;
                        }
                }
                for ( i = 0; (0 > dstI) && (i < h); ++i ) {
                        if ( '.' == map[ i ][ 0 ] ) {
                                dstI = i;
                                dstJ = 0;
                        }
                        if ( '.' == map[ i ][ w-1 ] ) {
                                dstI = i;
                                dstJ = w - 1;
                        }
                }

                memset( walk, 0, sizeof(walk) );
                ans = INF;
                tmp = 0;
                for ( i = 0; i < T; ++i ) {
                        dfs( srcI, srcJ, i );
                }
                printf( "%d\n", ((INF != ans) ? ans : (-1)) );
        }
        return 0;
}
*/

posted on 2012-04-21 16:40 coreBugZJ 閱讀(657) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM 、Algorithm課內(nèi)作業(yè)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            中日韩高清电影网| 一区二区三区欧美视频| 欧美亚洲免费高清在线观看| 一本久久青青| 国产欧美亚洲一区| 欧美www视频在线观看| 欧美精品久久久久久久免费观看| 亚洲精品视频在线观看免费| 99精品99久久久久久宅男| 国产精品一区二区在线观看| 久久在线视频在线| 欧美精品18| 香蕉久久夜色| 欧美不卡一卡二卡免费版| 亚洲视频欧美视频| 久久精品国产综合精品| 亚洲美洲欧洲综合国产一区| 亚洲午夜av在线| 亚洲福利视频一区二区| 亚洲免费福利视频| 樱桃视频在线观看一区| 一本色道久久综合亚洲精品不卡 | 麻豆精品视频| 欧美成人午夜视频| 欧美电影专区| 久久全球大尺度高清视频| 免费观看日韩av| 亚洲一区二区视频在线| 久久黄色影院| 亚洲自拍偷拍视频| 欧美大片在线看| 久久久国产成人精品| 欧美日本在线| 免费欧美日韩| 国产日韩欧美综合| 日韩一级裸体免费视频| 亚洲高清一区二区三区| 性欧美精品高清| 亚洲一区国产一区| 欧美好吊妞视频| 久久久午夜精品| 国产日本欧美在线观看| 夜夜狂射影院欧美极品| 亚洲免费观看在线观看| 久久人人爽人人| 久久婷婷亚洲| 国产亚洲欧美另类中文| 宅男噜噜噜66一区二区66| 亚洲毛片一区二区| 免费不卡视频| 欧美成人在线免费观看| 精品9999| 久久精品一区二区三区不卡牛牛| 校园春色国产精品| 国产精品视频免费观看| 中文一区二区| 午夜精品国产更新| 国产精品乱码| 亚洲主播在线| 欧美怡红院视频| 国产日韩欧美一区二区三区四区 | 亚欧美中日韩视频| 国产精自产拍久久久久久| 亚洲婷婷综合久久一本伊一区| 亚洲天堂偷拍| 欧美体内she精视频| 亚洲视频在线免费观看| 亚洲欧美激情四射在线日| 国产精品美女一区二区| 午夜一级在线看亚洲| 久久国产精品久久久久久久久久| 国产农村妇女毛片精品久久莱园子| 亚洲一区二区在线看| 久久精品欧美日韩| 亚洲动漫精品| 欧美黑人多人双交| 亚洲午夜久久久久久久久电影院 | 欧美一区二区三区喷汁尤物| 久久久www| 亚洲国产精品精华液2区45| 欧美大片在线观看一区| 99精品国产一区二区青青牛奶| 亚洲网站在线观看| 国产午夜久久久久| 嫩模写真一区二区三区三州| 亚洲精选一区二区| 欧美与黑人午夜性猛交久久久| 狠狠入ady亚洲精品| 能在线观看的日韩av| 99国产精品国产精品久久 | 亚洲国产精品国自产拍av秋霞| 欧美屁股在线| 欧美一区二区三区久久精品 | 一本色道婷婷久久欧美| 国产欧美精品在线观看| 久热精品在线视频| 亚洲一级在线| 亚洲第一福利视频| 亚洲淫片在线视频| 亚洲大胆视频| 国产精品免费看久久久香蕉| 久久久久久久成人| 一区二区三区日韩欧美精品| 另类天堂av| 亚洲一区在线播放| 亚洲欧洲综合另类在线| 国产精品一区二区三区观看| 老牛影视一区二区三区| 午夜欧美大尺度福利影院在线看| 亚洲成色www8888| 欧美中文字幕视频在线观看| 一本色道久久88精品综合| 国外视频精品毛片| 国产精品三上| 欧美日韩亚洲综合一区| 鲁鲁狠狠狠7777一区二区| 亚洲在线黄色| 夜夜精品视频| 亚洲人体大胆视频| 欧美二区在线观看| 久久久久国产精品一区三寸 | 日韩视频中文字幕| 在线精品国产欧美| 国内成+人亚洲+欧美+综合在线| 欧美日韩黄视频| 欧美激情小视频| 久久这里有精品视频| 久久久久久久综合色一本| 亚洲香蕉伊综合在人在线视看| 亚洲欧洲综合| 亚洲国产精品一区二区第四页av| 老司机一区二区三区| 久久人人爽人人爽爽久久| 先锋亚洲精品| 欧美夜福利tv在线| 香港久久久电影| 香蕉成人久久| 久久国产免费| 久久久久久久久久看片| 久久久久欧美精品| 久久综合中文| 欧美aⅴ99久久黑人专区| 免费欧美在线| 亚洲黄一区二区| 亚洲每日更新| 亚洲一区二区三区四区五区午夜 | 亚洲午夜久久久久久尤物| 亚洲无线视频| 亚洲男女毛片无遮挡| 亚洲欧美在线x视频| 欧美伊人影院| 美国成人毛片| 欧美日韩成人在线观看| 欧美黄色小视频| 欧美日韩精品中文字幕| 国产精品久久久久久久久久免费| 国产精品久久久久久av福利软件| 国产精品区一区| 黄色成人精品网站| 亚洲乱码国产乱码精品精天堂| 99精品国产99久久久久久福利| 亚洲一区网站| 老鸭窝毛片一区二区三区| 亚洲国产欧美精品| 一区二区三区国产盗摄| 欧美综合国产| 欧美丰满高潮xxxx喷水动漫| 欧美亚洲成人精品| 精品成人在线观看| 亚洲毛片在线观看| 欧美一区二区黄| 亚洲国产合集| 午夜精品婷婷| 欧美伦理视频网站| 韩日精品中文字幕| 一区二区三区视频在线 | 亚洲少妇诱惑| 久久亚洲色图| 一区二区三区高清视频在线观看| 欧美一区二区视频在线观看| 欧美成人精品高清在线播放| 国产精品羞羞答答xxdd| 91久久国产精品91久久性色| 亚洲欧美中日韩| 亚洲国产视频直播| 欧美一区二区三区四区高清| 欧美日本亚洲韩国国产| 国内精品福利| 亚洲欧美日韩精品久久久| 欧美黄色精品| 欧美在线视频免费播放| 欧美小视频在线| 日韩亚洲欧美中文三级| 久久欧美肥婆一二区| 这里只有精品丝袜| 欧美国产成人在线| 亚洲国产成人av| 久久九九国产精品怡红院| 亚洲少妇诱惑| 欧美视频国产精品|