Submission details
Task:Hypyt
Sender:viiviP
Submission time:2026-04-14 18:47:58 +0300
Language:C++ (C++17)
Status:READY
Result:0
Feedback
subtaskverdictscore
#10
#20
#30
#40
#50
Test results
testverdicttimesubtask
#1--1, 2, 3, 4, 5details
#20.90 s1, 2, 3, 4, 5details
#3--1, 2, 3, 4, 5details
#4--1, 2, 3, 4, 5details
#5--1, 2, 3, 4, 5details
#60.75 s2, 5details
#70.74 s2, 5details
#80.75 s2, 5details
#90.80 s3, 4, 5details
#100.83 s3, 4, 5details
#110.95 s3, 4, 5details
#120.75 s4, 5details
#130.77 s4, 5details
#140.84 s4, 5details
#150.72 s5details
#160.77 s5details
#170.75 s5details
#180.81 s5details
#19--5details
#200.98 s5details
#21--5details
#22--1, 2, 3, 4, 5details
#230.96 s1, 2, 3, 4, 5details
#240.74 s5details
#250.74 s5details
#260.71 s5details
#27ACCEPTED0.08 s5details

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, m,q;
    cin >>n>>m>>q;

    int N = n+m;
    vector<vector<int>> v(N);
    for (int i = 0; i<n;i++) {
        string s;
        cin >>s;
        for (int j = 0; j<m;j++) {
            if (s[j] == '.') {
                v[i].push_back(n+j);
                v[n+j].push_back(i);
            }
        }
    }
    vector<vector<ll>> dist(N, vector<ll> (N, 1e9));
    for (int i = 0; i<N;i++) {
        queue<int> q;
        vector<int> z(N);
        q.push(i);
        while (!q.empty()) {
            int s = q.front();
            q.pop();
            z[i] = 1;
            for (auto u : v[s]) {
                if (z[u] == 0) {
                    q.push(u);
                    dist[i][u] = dist[i][s] + 1;
                }
            }
        }   
    }
    for (int i = 0; i<q;i++) {
        int x1, y1, x2, y2;
        cin >>x1>>y1>>x2>>y2;
        if (x1 == x2 && y1 == y2) {
            cout <<"0\n";
            continue;
        } else {
            ll ans = 1e9;
            vector<int> s = {x1, y1+n};
            vector<int> e = {x2, y2+n};
            for (auto b : s) {
                for (auto r : e) {
                    ans = min(ans, dist[b][r]);
                }
            }
            if (ans < 1e9) {
                cout <<ans<<"\n";
            } else {
                cout <<"-1\n";
            }
        }
    }
}

Test details

Test 1 (public)

Subtask: 1, 2, 3, 4, 5

Verdict:

input
4 6 5
.*.***
*...**
*****.
*..*.*
...

correct output
1
0
3
3
-1

user output
(empty)

Test 2

Subtask: 1, 2, 3, 4, 5

Verdict:

input
10 10 10
..........
.....*....
........*.
*.*....*..
...

correct output
1
2
1
2
2
...

user output
(empty)

Test 3

Subtask: 1, 2, 3, 4, 5

Verdict:

input
10 10 10
*...***.**
*****.*...
**..**.**.
..**.**.*.
...

correct output
1
2
2
1
2
...

user output
(empty)

Test 4

Subtask: 1, 2, 3, 4, 5

Verdict:

input
10 10 10
***.*.****
**********
*.********
.*.***.**.
...

correct output
3
4
2
3
4
...

user output
(empty)

Test 5

Subtask: 1, 2, 3, 4, 5

Verdict:

input
10 10 1
.****.****
**.**..***
**********
*******..*
...

correct output
7

user output
(empty)

Test 6

Subtask: 2, 5

Verdict:

input
250 250 250
.*...*.....*******..**...*.......

correct output
2
3
3
2
2
...

user output
(empty)

Test 7

Subtask: 2, 5

Verdict:

input
250 250 250
...*......**.**.*.*..**..*..**...

correct output
2
2
2
2
3
...

user output
(empty)

Test 8

Subtask: 2, 5

Verdict:

input
250 250 250
**..**..****.****.*.***.***..*...

correct output
2
3
3
3
3
...

user output
(empty)

Test 9

Subtask: 3, 4, 5

Verdict:

input
40 40 200000
...*.**.*..*.............*.*.....

correct output
2
2
2
2
2
...

user output
(empty)

Test 10

Subtask: 3, 4, 5

Verdict:

input
40 40 200000
**.**..*.*.*.******....****.*....

correct output
2
1
3
2
2
...

user output
(empty)

Test 11

Subtask: 3, 4, 5

Verdict:

input
40 40 200000
.*.*.**.*****.***.*.****.**.**...

correct output
3
3
3
3
3
...

user output
(empty)

Test 12

Subtask: 4, 5

Verdict:

input
80 80 200000
*....**.***..****...*.....*......

correct output
2
2
2
2
2
...

user output
(empty)

Test 13

Subtask: 4, 5

Verdict:

input
80 80 200000
.***.*..*.***..*****....**...*...

correct output
3
2
2
3
2
...

user output
(empty)

Test 14

Subtask: 4, 5

Verdict:

input
80 80 200000
*******.*****.*..*..****...***...

correct output
2
3
1
2
2
...

user output
(empty)

Test 15

Subtask: 5

Verdict:

input
250 250 200000
*....*..*..*..**..*.........**...

correct output
3
2
2
2
2
...

user output
(empty)

Test 16

Subtask: 5

Verdict:

input
250 250 200000
..*....*..*......*.**.*.*..***...

correct output
2
2
2
2
2
...

user output
(empty)

Test 17

Subtask: 5

Verdict:

input
250 250 200000
*..*.*****.*********.****.****...

correct output
3
3
2
2
2
...

user output
(empty)

Test 18

Subtask: 5

Verdict:

input
250 250 200000
*********.**********.******.**...

correct output
3
3
3
3
3
...

user output
(empty)

Test 19

Subtask: 5

Verdict:

input
250 250 200000
.*****************************...

correct output
104
422
145
93
65
...

user output
(empty)

Test 20

Subtask: 5

Verdict:

input
250 250 200000
..****************************...

correct output
57
155
38
65
98
...

user output
(empty)

Test 21

Subtask: 5

Verdict:

input
250 250 200000
.*****************************...

correct output
498
498
498
498
498
...

user output
(empty)

Test 22

Subtask: 1, 2, 3, 4, 5

Verdict:

input
10 1 10
*
*
.
*
...

correct output
0
1
1
0
0
...

user output
(empty)

Test 23

Subtask: 1, 2, 3, 4, 5

Verdict:

input
1 10 10
........*.
1 7 1 10
1 4 1 7
1 5 1 1
...

correct output
1
1
1
1
1
...

user output
(empty)

Test 24

Subtask: 5

Verdict:

input
250 1 200000
*
.
*
.
...

correct output
1
1
1
1
1
...

user output
(empty)

Test 25

Subtask: 5

Verdict:

input
1 250 200000
*.*.*...*.*.**.***..**.*.*..**...

correct output
1
1
1
1
1
...

user output
(empty)

Test 26

Subtask: 5

Verdict:

input
250 250 200000
.................................

correct output
2
2
2
2
2
...

user output
(empty)

Test 27

Subtask: 5

Verdict: ACCEPTED

input
250 250 200000
******************************...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...