제출 #1188430

#제출 시각아이디문제언어결과실행 시간메모리
1188430qwushaStranded Far From Home (BOI22_island)C++20
10 / 100
1093 ms18968 KiB
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef long double ld;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
#define int long long


vector<vector<int>> g;

signed main() {
    int n, m;
    cin >> n >> m;
    vector<int> s(n);
    for (int i = 0; i < n; i++) {
        cin >> s[i];
    }
    g.resize(n);
    for (int i = 0; i < m; i++) {
        int v, u;
        cin >> v >> u;
        g[v - 1].push_back(u - 1);
        g[u - 1].push_back(v - 1);
    }
    vector<int> ans(n);
    for (int i = 0; i < n; i++) {
        vector<int> used(n);
        int cursz = s[i];
        used[i] = 1;
        set<pair<int, int>> st;
        for (auto u : g[i]) {
            st.insert({s[u], u});
        }
        while (!st.empty()) {
            auto pa = *st.begin();
            int siz = pa.fi;
            int v = pa.se;
            st.erase(pa);
            if (used[v])
                continue;
            if (siz <= cursz) {
                cursz += siz;
                used[v] = 1;
                for (auto u : g[v]) {
                    if (!used[u]) {
                        st.insert({s[u], u});
                    }
                }
            }
        }
        bool ok = 1;
        for (int j = 0; j < n; j++) {
            if (!used[j])
                ok = 0;
        }
        ans[i] = ok;
        cout << ans[i];
    }
}
#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...