제출 #1335640

#제출 시각아이디문제언어결과실행 시간메모리
1335640gamigafyStranded Far From Home (BOI22_island)C++20
0 / 100
1097 ms28364 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
#define sz(x) (int)(x).size()

void solve() {
    int n, m;
    cin >> n >> m;

    vector<ll> s(n);
    for (auto &x : s) {
        cin >> x;
    }

    vector<vector<int>> adj(n);
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        u--, v--;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    for (int i = 0; i < n; i++) {
        sort(adj[i].begin(), adj[i].end(), [&](int u, int v) {
            return s[u] < s[v];
        });
    }
    
    vector<bool> vis(n);
    ll siz = 0, tot = accumulate(s.begin(), s.end(), 0LL);
    auto dfs = [&](auto &dfs, int u) -> void {
        vis[u] = true;
        siz += s[u];
        for (int v : adj[u]) {
            if (!vis[v] && siz >= s[v]) {
                dfs(dfs, v);
            }
        }
    };

    for (int i = 0; i < n; i++) {
        vis.assign(n, false);
        siz = 0;
        dfs(dfs, i);
        cout << (siz == tot ? 1 : 0);
    }
    cout << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    // cin >> t;
    while (t--) solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...