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

coreBugZJ

此 blog 已棄。

EOJ 1780 Escape

/*
EOJ 1780 Escape


----問題描述:

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


----分析:

搜索即可,只是注意擴展方式,左或右可以時,不可向前。

*/




/**********************************************************
版本五:
AC 0MS
SPFA 求最短路。
出口不止一個,邊界上的可達點都是出口。
*/


#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)之前對 “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 求最短路。
錯誤“從目標點可離開地圖”修正。
*/

/*
#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 閱讀(664) 評論(0)  編輯 收藏 引用 所屬分類: ACMAlgorithm課內作業(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>
            亚洲欧美福利一区二区| 久久成人国产精品| 一本一道久久综合狠狠老精东影业 | 亚洲国产精品久久久久秋霞影院 | 久久国产精品第一页| 欧美一区二区视频在线观看| 欧美在线看片| 久热国产精品| 欧美国产在线视频| 欧美日韩人人澡狠狠躁视频| 国产精品久久久久久久电影 | 久热re这里精品视频在线6| 久久综合伊人77777| 欧美国产国产综合| 欧美日本一道本| 欧美性做爰毛片| 国产日韩精品综合网站| 伊人婷婷欧美激情| 久久亚洲免费| 久久久国产一区二区三区| 老司机精品视频网站| 欧美电影美腿模特1979在线看| 欧美激情视频网站| 一本综合精品| 小嫩嫩精品导航| 麻豆精品视频在线观看视频| 欧美日韩精品一区二区| 国产麻豆视频精品| 在线观看欧美| 亚洲一区二区成人| 久久嫩草精品久久久久| 最新日韩av| 亚洲免费视频一区二区| 麻豆精品在线播放| 国产精品高潮呻吟久久av无限| 国产日韩精品一区观看 | 国产区日韩欧美| 最新中文字幕一区二区三区| 亚洲性图久久| 欧美a级理论片| 一本色道久久综合一区| 久久精品国产v日韩v亚洲| 欧美日韩国产成人| 国内精品免费在线观看| 亚洲午夜羞羞片| 久久字幕精品一区| 一区二区欧美视频| 久久久久免费视频| 国产精品国产三级国产普通话99| 激情综合色丁香一区二区| 亚洲一区二区三区高清| 蜜臀av国产精品久久久久| 中国女人久久久| 女人香蕉久久**毛片精品| 国产欧美日韩激情| 9人人澡人人爽人人精品| 久久久久天天天天| 在线一区二区三区四区| 欧美jizz19性欧美| 国产一级一区二区| 亚洲一区二区黄色| 亚洲国产成人av| 久久精品成人欧美大片古装| 欧美色欧美亚洲另类二区| 亚洲国产日本| 久久综合给合久久狠狠狠97色69| 一区二区三区欧美视频| 欧美11—12娇小xxxx| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲午夜一区| 亚洲欧洲精品一区二区| 久久天堂精品| 海角社区69精品视频| 亚欧成人在线| 99视频日韩| 欧美人与禽猛交乱配视频| 亚洲福利av| 美乳少妇欧美精品| 欧美一区二区视频在线观看| 国产精品亚洲一区二区三区在线| 国产精品99久久不卡二区| 亚洲国产欧美一区| 毛片基地黄久久久久久天堂| 伊人蜜桃色噜噜激情综合| 久久久国产一区二区| 亚洲欧美成人一区二区在线电影 | 久久久国产精品一区二区中文| 亚洲午夜激情网站| 欧美性做爰毛片| 中文在线一区| 99在线视频精品| 欧美日韩ab片| 一区二区三区成人| 日韩网站在线| 欧美午夜在线视频| 亚洲一区在线直播| 在线视频你懂得一区二区三区| 欧美日韩高清在线| 一区二区三区高清在线观看| 日韩视频在线观看国产| 欧美猛交免费看| 一区二区三区高清| 这里只有精品视频| 国产精品久久一卡二卡| 午夜精品999| 午夜精品久久久久久| 国产日韩欧美成人| 久久免费少妇高潮久久精品99| 欧美一区二区视频97| 国模叶桐国产精品一区| 免费视频一区二区三区在线观看| 久久嫩草精品久久久精品| 在线播放一区| 亚洲国产精品久久久久秋霞影院| 欧美黄色大片网站| 亚洲自拍都市欧美小说| 亚洲专区在线| 一区三区视频| 91久久在线| 国产精品久久久久久久久借妻 | 中文在线资源观看视频网站免费不卡| 99这里有精品| 国产女主播一区| 农村妇女精品| 欧美精品一区在线发布| 午夜视频久久久| 久久精品电影| 亚洲乱码国产乱码精品精可以看 | 欧美日韩在线一二三| 欧美一区二区三区视频在线| 久久精品99久久香蕉国产色戒| 亚洲国产午夜| 一区二区三区免费网站| 国产婷婷色一区二区三区四区| 欧美高清视频一区| 欧美性生交xxxxx久久久| 久久久水蜜桃| 欧美大片在线看免费观看| 亚洲欧美中日韩| 久久综合给合| 亚洲欧美一区二区三区在线| 久久久之久亚州精品露出| 在线视频日韩精品| 欧美在线观看视频一区二区三区| 亚洲欧洲在线看| 午夜在线精品偷拍| 亚洲卡通欧美制服中文| 羞羞色国产精品| 日韩视频亚洲视频| 午夜宅男久久久| 一本大道久久a久久精二百| 午夜视频在线观看一区二区| 亚洲精品一区二区三区av| 亚洲中字黄色| 一本色道久久综合亚洲二区三区| 欧美一区二区三区免费视频| 亚洲免费观看| 久久精品首页| 亚洲欧美变态国产另类| 蜜臀a∨国产成人精品 | 亚洲一区二区视频在线观看| 亚洲国产欧美一区二区三区久久| 亚洲欧美乱综合| 9i看片成人免费高清| 久久蜜桃资源一区二区老牛 | 欧美日韩一区二区欧美激情| 葵司免费一区二区三区四区五区| 欧美日韩网址| 亚洲高清影视| 一区二区在线观看视频| 亚洲一区二区视频在线观看| 亚洲最新视频在线| 免费日韩av电影| 久久久精品日韩| 国产精品乱码妇女bbbb| 亚洲人精品午夜| 亚洲激情亚洲| 久久精品亚洲精品国产欧美kt∨| 欧美一区二区福利在线| 欧美三级乱码| 亚洲精品久久久蜜桃| 亚洲欧洲精品一区二区三区不卡 | 久久先锋影音| 久久久久99| 国产欧美日韩不卡| 亚洲一区二区三区视频| 亚洲一级在线观看| 欧美另类一区二区三区| 亚洲福利一区| 亚洲激情在线| 久久人人爽爽爽人久久久| 久久久之久亚州精品露出| 国产日韩一区二区| 亚洲欧美电影院| 欧美在现视频| 国产欧美在线播放| 欧美亚洲一区二区在线观看| 性亚洲最疯狂xxxx高清| 国产精品久久久久免费a∨| 亚洲午夜久久久久久久久电影网|