编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#20637 #1037. 膨胀的tyx Accepted 100 3498 ms 35748 K C++ 11 / 1.8 K JM233333 2019-07-27 23:47:24
显示原始代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>

using namespace std;
typedef long long ll;

class Point {
public:
    int x, y;
    Point(int i, int j) : x(i), y(j) {}
    Point() {}
    friend bool operator==(const Point& A, const Point& B) { return (A.x == B.x && A.y == B.y); }
    friend bool operator!=(const Point& A, const Point& B) { return !(A == B); }
};

bool bfs(Point st);
bool is_legal(int x, int y);

const int dx[] = { 1, -1, 0, 0 };
const int dy[] = { 0, 0, 1, -1 };
const Point NPT = Point(-1, -1);
const int MAX = 2005;
char maze[MAX][MAX];
Point from[MAX][MAX];
int n, m;

int main() {
    // freopen("test.txt", "r", stdin);
    while (scanf("%d %d", &n, &m) != EOF) {
        // 初始化
        memset(from, -1, sizeof(from));
        // 输入
        for (int i = 0; i < n; i++) {
            scanf("%s", maze[i]);
        }
        // 获取起点
        Point st;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++) {
                if (maze[i][j] == 'S') {
                    st = Point(i, j);
                }
            }
        // BFS
        bool flag = bfs(st);
        // 输出
        if (flag) {
            printf("Yes\n");
        } else {
            printf("No\n");
        }
    }
    return 0;
}
// 广度优先搜索
bool bfs(Point st) {
    // 主循环
    queue<Point> q;
    q.push(st);
    while (!q.empty()) {
        // 出队
        Point p = q.front();
        q.pop();
        // 遍历邻接节点
        for (int i = 0; i < 4; i++) {
            // 获取邻接节点
            int ax = p.x + dx[i], ay = p.y + dy[i];
            int rx = ax, ry = ay;
            rx = ((rx % n) + n) % n;
            ry = ((ry % m) + m) % m;
            // 不可通行
            if (maze[rx][ry] == '#') {
                continue;
            }
            // 入队
            if (from[rx][ry] == NPT) {
                from[rx][ry] = Point(ax, ay);
                q.push(Point(ax, ay));
            } else if (from[rx][ry] != Point(ax, ay)) {
                return true;
            }
        }
    }
    // 返回
    return false;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:41 ms
内存:31852 KiB

输入文件(data1.in

3 3
#.#
#.#
#S#

答案文件(data1.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #2
Accepted
得分:100
用时:31 ms
内存:31828 KiB

输入文件(data2.in

5 5
#.#.#
..#.S
#####
..#..
#.#.#

答案文件(data2.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #3
Accepted
得分:100
用时:28 ms
内存:31824 KiB

输入文件(data3.in

7 4
.##.
.S##
#.##
#..#
##.#
.#..
.###

答案文件(data3.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #4
Accepted
得分:100
用时:26 ms
内存:31832 KiB

输入文件(data4.in

5 5
#.#.#
..#..
#####
.S#..
#.#.#

答案文件(data4.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #5
Accepted
得分:100
用时:26 ms
内存:31748 KiB

输入文件(data5.in

6 20
#.##.##.##.##.##.##.
#.##.##.##.##.##.##.
#.##.##.##.##.##.##.
S.#..#..#..#..#..#..
##..#.
<36 bytes omitted>

答案文件(data5.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #6
Accepted
得分:100
用时:27 ms
内存:31828 KiB

输入文件(data6.in

5 5
#.#.#
..#.S
#####
..#..
#.#.#

答案文件(data6.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #7
Accepted
得分:100
用时:28 ms
内存:31828 KiB

输入文件(data7.in

3 3
#.#
#.#
#S#

答案文件(data7.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #8
Accepted
得分:100
用时:39 ms
内存:35668 KiB

输入文件(data8.in

2000 2000
S#########################################################################################
<4001910 bytes omitted>

答案文件(data8.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #9
Accepted
得分:100
用时:180 ms
内存:35660 KiB

输入文件(data9.in

2000 2000
S.........................................................................................
<4001910 bytes omitted>

答案文件(data9.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #10
Accepted
得分:100
用时:332 ms
内存:35668 KiB

输入文件(data10.in

2000 2000
S.........................................................................................
<4001910 bytes omitted>

答案文件(data10.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #11
Accepted
得分:100
用时:293 ms
内存:35668 KiB

输入文件(data11.in

2000 2000
S.........................................................................................
<4001910 bytes omitted>

答案文件(data11.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #12
Accepted
得分:100
用时:137 ms
内存:35668 KiB

输入文件(data12.in

2000 2000
#S########################################################################################
<4001910 bytes omitted>

答案文件(data12.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #13
Accepted
得分:100
用时:135 ms
内存:35704 KiB

输入文件(data13.in

2000 2000
##########################################################################################
<4001910 bytes omitted>

答案文件(data13.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #14
Accepted
得分:100
用时:136 ms
内存:35664 KiB

输入文件(data14.in

2000 2000
##########################################################################################
<4001910 bytes omitted>

答案文件(data14.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #15
Accepted
得分:100
用时:138 ms
内存:35668 KiB

输入文件(data15.in

2000 2000
##########################################################################################
<4001910 bytes omitted>

答案文件(data15.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #16
Accepted
得分:100
用时:33 ms
内存:31712 KiB

输入文件(data16.in

5 5
##.##
##.##
#....
#S###
#..#.

答案文件(data16.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #17
Accepted
得分:100
用时:25 ms
内存:31736 KiB

输入文件(data17.in

4 4
#.##
..#.
.#S#
#...

答案文件(data17.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #18
Accepted
得分:100
用时:171 ms
内存:35704 KiB

输入文件(data18.in

2000 2000
#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.
<4003911 bytes omitted>

答案文件(data18.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #19
Accepted
得分:100
用时:194 ms
内存:35704 KiB

输入文件(data19.in

2000 2000
#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.
<4003911 bytes omitted>

答案文件(data19.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #20
Accepted
得分:100
用时:167 ms
内存:35664 KiB

输入文件(data20.in

2000 2000
#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.
<4003911 bytes omitted>

答案文件(data20.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #21
Accepted
得分:100
用时:39 ms
内存:35704 KiB

输入文件(data21.in

2000 2000
#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.
<4003911 bytes omitted>

答案文件(data21.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #22
Accepted
得分:100
用时:168 ms
内存:35668 KiB

输入文件(data22.in

2000 2000
#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.
<4003911 bytes omitted>

答案文件(data22.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #23
Accepted
得分:100
用时:39 ms
内存:35704 KiB

输入文件(data23.in

2000 2000
.#.###.##.#.#.###..#.#.#...##....##...#..#.#......##.###.##.#..##...##...########.###..#.
<4003911 bytes omitted>

答案文件(data23.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #24
Accepted
得分:100
用时:53 ms
内存:35700 KiB

输入文件(data24.in

2000 2000
.#.###.##.#.#.###..#.#.#...##....##...#..#.#......##.###.##.#..##...##...########.###..#.
<4003911 bytes omitted>

答案文件(data24.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #25
Accepted
得分:100
用时:39 ms
内存:35668 KiB

输入文件(data25.in

2000 2000
.#.###.##.#.#.###..#.#.#...##....##...#..#.#......##.###.##.#..##...##...########.###..#.
<4003911 bytes omitted>

答案文件(data25.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #26
Accepted
得分:100
用时:38 ms
内存:35668 KiB

输入文件(data26.in

2000 2000
#.######..##.###..##...#...#.#.#...#.######.#.#######.#...##.#########..#.##.#...##.###.#
<4003911 bytes omitted>

答案文件(data26.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #27
Accepted
得分:100
用时:38 ms
内存:35668 KiB

输入文件(data27.in

2000 2000
#.######..##.###..##...#...#.#.#...#.######.#.#######.#...##.#########..#.##.#...##.###.#
<4003911 bytes omitted>

答案文件(data27.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #28
Accepted
得分:100
用时:38 ms
内存:35704 KiB

输入文件(data28.in

2000 2000
#.######..##.###..##...#...#.#.#...#.######.#.#######.#...##.#########..#.##.#...##.###.#
<4003911 bytes omitted>

答案文件(data28.out

No

用户输出

No

系统信息

Exited with return code 0
测试点 #29
Accepted
得分:100
用时:272 ms
内存:35740 KiB

输入文件(data29.in

2000 2000
.#...##...##....#.#....#.#.####..#.....###......##...#....##..##..#######...###.#.#.#...#
<4003911 bytes omitted>

答案文件(data29.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #30
Accepted
得分:100
用时:280 ms
内存:35668 KiB

输入文件(data30.in

2000 2000
..##.....##..#.#..#..#.#..###....##.....#...#...........#.####......#..##.....###..#.#..#
<4003911 bytes omitted>

答案文件(data30.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #31
Accepted
得分:100
用时:265 ms
内存:35748 KiB

输入文件(data31.in

2000 2000
###....#..........#.#.......####..#.#.#.#.##...####..##..##............#..#.##..#.#...##.
<4003911 bytes omitted>

答案文件(data31.out

Yes

用户输出

Yes

系统信息

Exited with return code 0
测试点 #32
Accepted
得分:100
用时:42 ms
内存:35704 KiB

输入文件(data32.in

2000 2000
..##...###.#.#...#..#.....#.#.....#....###.........##.##.....##...##..##.#......#........
<4003911 bytes omitted>

答案文件(data32.out

No

用户输出

No

系统信息

Exited with return code 0