# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1179404 | Iskachun | Stranded Far From Home (BOI22_island) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long ll;
void solve() {
ll n, m; cin >> n >> m;
vector<ll> a(n);
for (ll &x : a) cin >> x;
vector<vector<ll>> g(n);
while (m--) {
ll u, v; cin >> u >> v;
g[--u].push_back(--v), g[v].push_back(u);
}
for (ll i = 0; i < n; i++) {
sort(g[i].begin(), g[i].end(), [&](ll x, ll y) {
return a[x] < a[y];
});
}
vector<ll> vis(n);
queue<ll> q;
for (ll i = 0; i < n; i++) {
vis = vector<ll> (n);
vis[i] = 1;
q.clear();
q.push(i);
ll tot = a[i];
while (q.size()) {
ll v = q.front(); q.pop();
for (ll u : g[v]) {
if (!vis[u] and a[u] <= tot) {
tot += a[u];
vis[u] = 1;
q.push(u);
}
}
}
ll flag = 1;
for (ll x : vis) flag &= x;
cout << flag;
}
}
int main() {
//freopen("filename.in", "r", stdin), freopen("filename.out", "w", stdout);
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1; //cin >> t;
while (t--) solve();
}