Submission #1362469

#TimeUsernameProblemLanguageResultExecution timeMemory
1362469AishaStranded Far From Home (BOI22_island)C++20
10 / 100
120 ms640 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int N = 2005;
vector <int> g[N];
int sz[N], ans[N], vis[N];

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n, m, sum = 0;
    cin >> n >> m;

    for (int i = 1; i <= n; i ++) cin >> sz[i], sum += sz[i];
    for (int i = 1, u, v; i <= m; i ++) cin >> u >> v, g[u].push_back(v), g[v].push_back(u);
    for (int i = 1; i <= n; i ++) sort(g[i].begin(), g[i].end(), [&](auto x, auto y){ return sz[x] < sz[y]; });

    for (int s = 1; s <= n; s ++) {
        int cur = sz[s];
        priority_queue <pair <int, int>> q; vis[s] = 1;
        for (int x : g[s]) q.push({-sz[x], x}), vis[x] = 1;
        while (!q.empty()) {
            auto [s, i] = q.top(); q.pop(); s = -s;
            if (s > cur) break;
            cur += s;
            for (int x : g[i]) if (!vis[x]) q.push({-sz[x], x}), vis[x] = 1;
        }
        if (cur == sum) ans[s] = 1;
        else ans[s] = 0;
        for (int i = 1; i <= n; i ++) vis[i] = 0;
    }

    for (int i = 1; i <= n; i ++) cout << ans[i];

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...