이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
void solve(){
int n, m; cin >> n >> m;
vector<int> s(n);
for(auto &u : s) cin >> u;
vector<vector<int>> g(n);
for(int i = 0; i < m; i ++){
int u, v; cin >> u >> v;
u --; v --;
g[u].push_back(v); g[v].push_back(u);
}
auto check = [&](int i)->int{
priority_queue<pair<int,int>> q;
ll cur = s[i];
vector<int> used(n);
used[i] = 1;
for(auto u : g[i]){
q.push({-s[u], u});
used[u] = 1;
}
int cnt = 1;
while(!q.empty()){
int t = q.top().second;
q.pop();
//cout << t + 1 << endl;
if(s[t] <= cur){
cur += s[t];
cnt ++;
}else{
return 0;
}
for(auto u : g[t]){
if(used[u]) continue;
used[u] = 1;
q.push({-s[u], u});
}
}
//for(auto u : used) cout << u << ' '; cout<< endl;
return cnt == n;
};
for(int i = 0; i < n; i ++){
cout << check(i);
#ifdef LOCAL
cout << endl;
#endif
}
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int testcases = 1;
//cin >> testcases;
while(testcases --){
solve();
if(testcases) cout << '\n';
#ifdef LOCAL
else cout << '\n';
cout << "___________________" << endl;
#endif
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |