Submission #850453

# Submission time Handle Problem Language Result Execution time Memory
850453 2023-09-16T15:00:17 Z MinaRagy06 Stranded Far From Home (BOI22_island) C++17
10 / 100
1000 ms 14140 KB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t ll;

const int N = 200'005;
bool in[N], bad[N];
vector<int> adj[N];
int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    int n, m;
    cin >> n >> m;
    int a[n], b[n];
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        b[i] = i;
    }
    sort(b, b + n, [&] (int i, int j) {return a[i] < a[j];});
    for (int i = 0, u, v; i < m; i++) {
        cin >> u >> v;
        u--, v--;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    int cnt = 0;
    int ans[n];
    memset(ans, -1, sizeof ans);
    for (auto st : b) {
        if (bad[st]) {
            ans[st] = 0;
            continue;
        }
        for (int i = 0; i < n; i++) {
            in[i] = 0;
        }
        in[st] = 1;
        priority_queue<pair<int, int>> pq;
        for (auto nxt : adj[st]) {
            pq.push({-a[nxt], nxt});
        }
        ll ttl = a[st];
        while (pq.size()) {
            int cost = -pq.top().first;
            int node = pq.top().second;
            pq.pop();
            if (in[node]) continue;
            if (ttl < cost) {
                break;
            }
            if (ans[node] == 1) {
                for (int j = 0; j < n; j++) {
                    in[j] = 1;
                }
                break;
            }
            ttl += cost;
            in[node] = 1;
            for (auto nxt : adj[node]) {
                if (!in[nxt]) {
                    pq.push({-a[nxt], nxt});
                }
            }
        }
        int ok = 1;
        for (int i = 0; i < n; i++) {
            ok &= in[i];
        }
      	cnt += ok;
        if (!ok) {
            for (int i = 0; i < n; i++) {
                if (in[i]) {
                    bad[i] = 1;
                }
            }
        }
        ans[st] = ok;
    }
    for (auto i : ans) {
        cout << i;
    }
    cout << '\n';
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4952 KB Output is correct
3 Correct 1 ms 4952 KB Output is correct
4 Correct 4 ms 5208 KB Output is correct
5 Correct 5 ms 5208 KB Output is correct
6 Correct 3 ms 5208 KB Output is correct
7 Correct 4 ms 5212 KB Output is correct
8 Correct 4 ms 5368 KB Output is correct
9 Correct 2 ms 5208 KB Output is correct
10 Correct 5 ms 5208 KB Output is correct
11 Correct 5 ms 5212 KB Output is correct
12 Correct 5 ms 5208 KB Output is correct
13 Correct 2 ms 5208 KB Output is correct
14 Correct 7 ms 5208 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4952 KB Output is correct
3 Execution timed out 1048 ms 13944 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Execution timed out 1064 ms 14040 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Execution timed out 1049 ms 14140 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4952 KB Output is correct
3 Correct 1 ms 4952 KB Output is correct
4 Correct 4 ms 5208 KB Output is correct
5 Correct 5 ms 5208 KB Output is correct
6 Correct 3 ms 5208 KB Output is correct
7 Correct 4 ms 5212 KB Output is correct
8 Correct 4 ms 5368 KB Output is correct
9 Correct 2 ms 5208 KB Output is correct
10 Correct 5 ms 5208 KB Output is correct
11 Correct 5 ms 5212 KB Output is correct
12 Correct 5 ms 5208 KB Output is correct
13 Correct 2 ms 5208 KB Output is correct
14 Correct 7 ms 5208 KB Output is correct
15 Correct 1 ms 4952 KB Output is correct
16 Correct 1 ms 4952 KB Output is correct
17 Execution timed out 1048 ms 13944 KB Time limit exceeded
18 Halted 0 ms 0 KB -