Submission details
Task:Shallow waters
Sender:aalto25h_005
Submission time:2025-10-22 17:22:12 +0300
Language:C++ (C++17)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#110.00 sdetails
#12ACCEPTED0.00 sdetails
#130.00 sdetails
#140.00 sdetails
#150.00 sdetails
#160.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#200.00 sdetails
#21ACCEPTED0.00 sdetails
#220.00 sdetails
#230.00 sdetails
#240.00 sdetails
#250.00 sdetails
#260.00 sdetails
#270.00 sdetails
#280.00 sdetails
#290.00 sdetails
#300.00 sdetails
#310.00 sdetails
#32--details
#33--details
#34--details
#35--details
#36--details
#37--details
#38--details
#39--details
#40--details
#41--details
#42--details
#43--details
#44--details
#45--details
#46--details
#47--details
#48--details
#49--details
#50--details
#51--details
#52--details
#53--details
#54--details
#55--details
#56--details
#57--details
#58--details
#59--details
#60--details
#61--details

Compiler report

input/code.cpp: In function 'bool there_is_bfs(std::vector<std::vector<long long int> >&, long long int, long long int, std::vector<long long int>&)':
input/code.cpp:26:33: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |         for (long long i = 0; i < adj.size(); ++i)
      |                               ~~^~~~~~~~~~~~

Code

#include <iostream>
#include <vector>
#include <queue>
#include <climits>
#include <algorithm>

using namespace std;


bool there_is_bfs(vector<vector<long long>> &adj, long long s, long long t, vector<long long> &parent)
{
    // No node has been visited yet
    vector<bool> visited(adj.size(), false);

    // Queue for BFS
    queue<long long> q;
    q.push(s);
    visited[s] = true;
    parent[s] = -1;

    // BFS
    while (!q.empty()) {
        long long u = q.front();
        q.pop();

        for (long long i = 0; i < adj.size(); ++i)
        {
            if (!visited[i] and adj[u][i] > 0) {
                if (i == t) {
                    parent[i] = u;
                    return true;
                }
                q.push(i);
                parent[i] = u;
                visited[i] = true;
            }
        }
    }

    // There is no path
    return false;
}


long long ford_fulkerson(vector<vector<long long>> &graph, long long start, long long end)
{
    vector<long long> parent(graph.size());
    vector<long long> max_flows;

    // While there is a path with positive capacities from start to end
    while (there_is_bfs(graph, start, end, parent)) {

        // Calculate path flow for the found path with bfs
        long long path_flow = LLONG_MAX;
        for (long long i = end; i != start; i = parent[i]) {
            long long v = parent[i];
            path_flow = min(path_flow, graph[v][i]);
        }

        // Update max flow
        max_flows.push_back(path_flow);
        //cout << "Found a path with " << path_flow << endl;

        // Update residual capacities
        for (long long i = end; i != start; i = parent[i]) {
            long long v = parent[i];
            graph[v][i] -= path_flow;
            graph[i][v] += path_flow;
        }
    }

    auto m = max_element(max_flows.begin(), max_flows.end());
    return *m;
}

int main() {
    long long n, m;
    cin >> n >> m;

    // Build graph with capacities
    vector<vector<long long>> capacity(n+1, vector<long long>(n+1));

    for (long long i = 1; i < n + 1; ++i) {
        for (long long j = 1; j < n + 1; ++j) {
            long long c;
            cin >> c;
            capacity[i][j] = c;
        }
            
    }

    for (int i = 0; i < m; ++i) {
        vector<vector<long long>> capacity_aux = capacity;
        int start, end;
        cin >> start >> end;
        cout << ford_fulkerson(capacity_aux, start, end) << endl;
    }        
}

Test details

Test 1

Verdict: ACCEPTED

input
2 1
0 39 
39 0 
1 2

correct output
39

user output
39

Test 2

Verdict: ACCEPTED

input
2 1
0 48 
48 0 
2 1

correct output
48

user output
48

Test 3

Verdict: ACCEPTED

input
3 2
0 69 81 
69 0 60 
81 60 0 
1 3
...

correct output
81
69

user output
81
69

Test 4

Verdict: ACCEPTED

input
3 1
0 41 45 
41 0 64 
45 64 0 
1 2

correct output
45

user output
45

Test 5

Verdict: ACCEPTED

input
3 1
0 87 49 
87 0 77 
49 77 0 
3 1

correct output
77

user output
77

Test 6

Verdict: ACCEPTED

input
3 3
0 56 38 
56 0 7 
38 7 0 
1 2
...

correct output
56
38
38

user output
56
38
38

Test 7

Verdict: ACCEPTED

input
4 2
0 88 79 73 
88 0 56 85 
79 56 0 30 
73 85 30 0 
...

correct output
85
79

user output
85
79

Test 8

Verdict: ACCEPTED

input
4 1
0 54 20 63 
54 0 100 37 
20 100 0 33 
63 37 33 0 
...

correct output
54

user output
54

Test 9

Verdict: ACCEPTED

input
4 6
0 77 96 6 
77 0 92 52 
96 92 0 37 
6 52 37 0 
...

correct output
92
52
52
52
52
...

user output
92
52
52
52
52
...

Test 10

Verdict: ACCEPTED

input
4 2
0 41 12 88 
41 0 57 61 
12 57 0 77 
88 61 77 0 
...

correct output
61
88

user output
61
88

Test 11

Verdict:

input
4 5
0 58 68 17 
58 0 11 87 
68 11 0 57 
17 87 57 0 
...

correct output
58
58
58
58
58

user output
58
58
58
58
57

Test 12

Verdict: ACCEPTED

input
5 4
0 86 65 6 80 
86 0 39 97 82 
65 39 0 28 53 
6 97 28 0 48 
...

correct output
86
86
86
65

user output
86
86
86
65

Test 13

Verdict:

input
5 5
0 13 10 67 42 
13 0 40 40 32 
10 40 0 94 69 
67 40 94 0 53 
...

correct output
67
67
67
69
40

user output
67
67
53
69
40

Test 14

Verdict:

input
5 5
0 95 34 12 63 
95 0 16 30 82 
34 16 0 49 53 
12 30 49 0 69 
...

correct output
69
82
69
82
53

user output
63
82
69
82
53

Test 15

Verdict:

input
5 3
0 13 90 25 3 
13 0 2 6 15 
90 2 0 10 46 
25 6 10 0 46 
...

correct output
46
46
46

user output
36
46
46

Test 16

Verdict:

input
5 4
0 86 22 70 78 
86 0 15 26 1 
22 15 0 91 20 
70 26 91 0 58 
...

correct output
86
70
70
70

user output
86
70
58
70

Test 17

Verdict: ACCEPTED

input
5 3
0 37 62 49 9 
37 0 40 30 65 
62 40 0 100 74 
49 30 100 0 82 
...

correct output
62
62
62

user output
62
62
62

Test 18

Verdict: ACCEPTED

input
5 3
0 7 60 54 44 
7 0 10 34 76 
60 10 0 49 74 
54 34 49 0 39 
...

correct output
60
54
74

user output
60
54
74

Test 19

Verdict: ACCEPTED

input
5 4
0 98 54 42 68 
98 0 27 27 87 
54 27 0 2 81 
42 27 2 0 34 
...

correct output
42
42
81
42

user output
42
42
81
42

Test 20

Verdict:

input
5 5
0 38 2 41 56 
38 0 62 53 15 
2 62 0 88 55 
41 53 88 0 71 
...

correct output
56
62
62
56
71

user output
41
62
62
56
71

Test 21

Verdict: ACCEPTED

input
5 8
0 1 22 14 17 
1 0 88 9 32 
22 88 0 40 88 
14 9 40 0 38 
...

correct output
22
40
22
40
40
...

user output
22
40
22
40
40
...

Test 22

Verdict:

input
10 26
0 65 80 9 98 64 27 62 36 68 
65 0 82 65 48 59 19 15 62 18 
80 82 0 3 80 15 78 62 44 22 
9 65 3 0 81 54 74 23 91 36 
...

correct output
98
81
76
80
80
...

user output
98
78
68
80
78
...

Test 23

Verdict:

input
10 1
0 10 42 68 81 90 10 32 99 45 
10 0 32 92 72 83 60 15 67 47 
42 32 0 42 97 9 43 69 75 91 
68 92 42 0 81 83 68 79 30 10 
...

correct output
90

user output
81

Test 24

Verdict:

input
10 25
0 34 63 79 51 60 47 39 97 43 
34 0 82 26 30 57 37 62 51 81 
63 82 0 86 7 23 21 80 51 44 
79 26 86 0 29 23 47 100 22 36 
...

correct output
81
81
81
66
100
...

user output
79
79
60
47
100
...

Test 25

Verdict:

input
10 10
0 90 3 60 29 79 98 10 41 87 
90 0 15 92 31 82 15 42 57 67 
3 15 0 3 70 31 68 66 47 59 
60 92 3 0 59 26 33 79 75 88 
...

correct output
82
79
90
91
79
...

user output
82
79
59
91
72
...

Test 26

Verdict:

input
10 41
0 22 78 60 44 8 53 55 40 51 
22 0 1 82 2 7 88 22 64 47 
78 1 0 1 95 61 94 53 63 69 
60 82 1 0 4 18 84 19 23 36 
...

correct output
78
78
61
78
64
...

user output
60
78
61
78
55
...

Test 27

Verdict:

input
10 35
0 62 9 28 60 15 3 58 26 47 
62 0 65 21 74 90 48 37 73 58 
9 65 0 42 27 17 21 1 81 99 
28 21 42 0 2 96 69 70 67 7 
...

correct output
62
62
62
62
90
...

user output
62
58
58
62
90
...

Test 28

Verdict:

input
10 35
0 60 44 100 6 55 72 72 75 38 
60 0 76 92 68 58 47 80 39 74 
44 76 0 82 72 13 100 94 73 71 
100 92 82 0 15 9 55 89 47 25 
...

correct output
89
83
89
89
92
...

user output
82
60
75
75
92
...

Test 29

Verdict:

input
10 20
0 54 68 91 61 14 21 84 46 72 
54 0 87 70 26 45 49 45 55 42 
68 87 0 22 96 53 50 77 36 42 
91 70 22 0 86 39 62 96 32 99 
...

correct output
91
87
87
96
91
...

user output
86
70
70
96
86
...

Test 30

Verdict:

input
10 9
0 2 56 43 7 23 3 32 7 80 
2 0 15 36 30 54 34 15 65 23 
56 15 0 29 99 40 36 44 61 99 
43 36 29 0 68 95 28 12 14 57 
...

correct output
90
67
67
90
67
...

user output
90
58
67
59
39
...

Test 31

Verdict:

input
10 30
0 22 17 58 39 81 65 88 62 19 
22 0 32 14 63 84 21 80 44 93 
17 32 0 90 70 99 87 91 50 69 
58 14 90 0 57 11 93 5 60 40 
...

correct output
88
88
88
88
93
...

user output
88
65
76
81
57
...

Test 32

Verdict:

input
100 4060
0 224279712 686036287 45105249...

correct output
984509996
986462105
982248996
984656610
985935261
...

user output
(empty)

Test 33

Verdict:

input
100 676
0 527822662 997975632 53018119...

correct output
993798769
991489320
988392606
975549477
986420088
...

user output
(empty)

Test 34

Verdict:

input
100 333
0 436234512 371770128 46427426...

correct output
973778856
973778856
975526572
973096824
972749112
...

user output
(empty)

Test 35

Verdict:

input
100 3357
0 68472304 913723608 220052402...

correct output
987176834
981901632
989344571
983084587
989344571
...

user output
(empty)

Test 36

Verdict:

input
100 3628
0 534502368 539714259 28374756...

correct output
986332762
993409969
993409969
984535136
986332762
...

user output
(empty)

Test 37

Verdict:

input
100 4615
0 509293538 258847661 53332274...

correct output
986084005
993410015
993410015
965516330
986242161
...

user output
(empty)

Test 38

Verdict:

input
100 2345
0 863913461 192636102 88476477...

correct output
985034014
984712168
970064352
985034014
983716327
...

user output
(empty)

Test 39

Verdict:

input
100 4167
0 278244915 816596895 99494306...

correct output
994650753
988169835
988586303
974999473
988169835
...

user output
(empty)

Test 40

Verdict:

input
100 2952
0 908068381 834928493 76958654...

correct output
971019561
990687292
981311675
986274515
994580228
...

user output
(empty)

Test 41

Verdict:

input
100 1620
0 257277309 280264417 59391568...

correct output
977276808
986699027
973703850
984814274
986229209
...

user output
(empty)

Test 42

Verdict:

input
200 455
0 686036287 971118925 48977720...

correct output
991763634
993383365
989047420
993694416
992916290
...

user output
(empty)

Test 43

Verdict:

input
200 12733
0 997975632 145040139 59548994...

correct output
992841688
994103522
994103522
993324323
993413618
...

user output
(empty)

Test 44

Verdict:

input
200 10671
0 371770128 104741444 35097588...

correct output
994112705
992684847
991175588
992684847
991850584
...

user output
(empty)

Test 45

Verdict:

input
200 785
0 913723608 846741138 23261249...

correct output
991015102
991393613
991393613
991393613
991393613
...

user output
(empty)

Test 46

Verdict:

input
200 4341
0 539714259 993409969 52728320...

correct output
995748996
992259426
995648041
995748996
995748996
...

user output
(empty)

Test 47

Verdict:

input
200 10033
0 258847661 29756805 772449744...

correct output
994518775
994534294
994518775
974715985
990234431
...

user output
(empty)

Test 48

Verdict:

input
200 19576
0 192636102 43478262 277317100...

correct output
990666123
991249036
990616659
991249036
991249036
...

user output
(empty)

Test 49

Verdict:

input
200 17516
0 816596895 223011120 40179408...

correct output
989788855
989788855
989788855
989788855
989788855
...

user output
(empty)

Test 50

Verdict:

input
200 2236
0 834928493 789779330 75492200...

correct output
990202245
990881031
993287512
993287512
996688854
...

user output
(empty)

Test 51

Verdict:

input
200 13669
0 280264417 35137122 58869367 ...

correct output
985495492
987275634
987275634
987275634
987275634
...

user output
(empty)

Test 52

Verdict:

input
500 44127
0 623250361 488402074 93887976...

correct output
997518315
997518315
997518315
997518315
997247172
...

user output
(empty)

Test 53

Verdict:

input
500 89310
0 410279705 670881494 19798128...

correct output
994290020
994290020
994290020
994290020
994290020
...

user output
(empty)

Test 54

Verdict:

input
500 32068
0 556762013 260875339 89984504...

correct output
996936245
996567301
996936245
996936245
996393864
...

user output
(empty)

Test 55

Verdict:

input
500 81911
0 365429213 243439455 38401914...

correct output
996657976
995517614
996657976
996419449
996657976
...

user output
(empty)

Test 56

Verdict:

input
500 66557
0 736625865 907021066 67376384...

correct output
996250418
996250418
996250418
996250418
996250418
...

user output
(empty)

Test 57

Verdict:

input
500 28215
0 507642456 772882187 23298617...

correct output
996927836
995199945
988550843
996861124
996927836
...

user output
(empty)

Test 58

Verdict:

input
500 4722
0 681246594 433718444 81827072...

correct output
996596738
995772851
996596738
995904634
994249067
...

user output
(empty)

Test 59

Verdict:

input
500 66897
0 670154826 911171975 19319438...

correct output
997410816
997103192
997322209
997322209
997410816
...

user output
(empty)

Test 60

Verdict:

input
500 4171
0 998224343 144467837 75333130...

correct output
997492638
996317859
993722528
996341116
997492638
...

user output
(empty)

Test 61

Verdict:

input
500 18979
0 722938317 668705452 11233444...

correct output
997573682
994464545
996219897
997093906
997573682
...

user output
(empty)