CSES - Aalto Competitive Programming 2024 - wk7 - Wed - Results
Submission details
Task:Airport
Sender:aalto2024h_002
Submission time:2024-10-23 16:48:41 +0300
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails

Code

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

const int N = 100;
ll W[N*2][N*2];
vector<int> V[N*2];
int n, m;
bool Z[N*2];

ll dfs(int i, ll c, ll w0) {
  if (i == N+n-1) {
    return w0;
  }
  if (Z[i]) return 0;
  Z[i] = 1;
  for (int j : V[i]) {
    ll w = W[i][j];
    if (w >= c) {
      ll v = dfs(j,c,min(w0,w));
      if (v) {
        W[i][j] -= v;
        W[j][i] += v;
        return v;
      }
    }
  }
  return 0;
}

int main() {
  cin >> n >> m;
  for (int i = 0; i < n; ++i) {
    cin >> W[i][i+N];
    if (W[i][i+N] == -1) {
      W[i][i+N] = 1e18;
    }
    V[i].push_back(i+N);
  }
  for (int i = 0; i < m; ++i) {
    int a, b;
    cin >> a >> b;
    V[N+a-1].push_back(b-1);
    V[b-1].push_back(N+a-1);
    W[N+a-1][b-1] = 1e18;
  }
  ll ans = 0;
  for (ll c = 1e18; c >= 1; c /= 2) {
    while (1) {
      memset(Z,0,sizeof(Z));
      ll w = dfs(0,c,1e18);
      if (w == 0) break;
      ans += w;
    }
  }
  cout << ans << '\n';
}

Test details

Test 1

Verdict: ACCEPTED

input
10 20
-1 85 7 19 90 72 11 46 65 -1
6 7
9 7
8 4
...

correct output
7

user output
7

Test 2

Verdict: ACCEPTED

input
10 20
-1 80 77 57 77 95 63 98 30 -1
6 7
8 9
7 8
...

correct output
30

user output
30

Test 3

Verdict: ACCEPTED

input
10 20
-1 63 16 42 62 70 9 94 68 -1
10 9
6 8
10 6
...

correct output
25

user output
25

Test 4

Verdict: ACCEPTED

input
10 20
-1 3 86 -1 32 34 9 50 -1 -1
6 7
7 8
9 2
...

correct output
3

user output
3

Test 5

Verdict: ACCEPTED

input
10 20
-1 43 38 -1 7 54 26 97 76 -1
3 9
9 10
6 7
...

correct output
76

user output
76

Test 6

Verdict: ACCEPTED

input
100 1000
-1 425576195 274150382 1021768...

correct output
6091126630

user output
6091126630

Test 7

Verdict: ACCEPTED

input
100 1000
-1 769953265 -1 389517741 2323...

correct output
769953265

user output
769953265

Test 8

Verdict: ACCEPTED

input
100 1000
-1 584988267 763129662 6781413...

correct output
1699511766

user output
1699511766

Test 9

Verdict: ACCEPTED

input
100 1000
-1 921671366 121044688 2933366...

correct output
1805833567

user output
1805833567

Test 10

Verdict: ACCEPTED

input
100 1000
-1 763842763 612011030 4532521...

correct output
3342235784

user output
3342235784

Test 11

Verdict: ACCEPTED

input
3 3
-1 1 -1
1 2
2 3
2 2

correct output
1

user output
1

Test 12

Verdict: ACCEPTED

input
3 4
-1 1 -1
1 2
1 2
2 3
...

correct output
1

user output
1

Test 13

Verdict: ACCEPTED

input
7 8
-1 1 1 1 1 1 -1
1 2
1 3
2 4
...

correct output
1

user output
1