Submission #714601

#TimeUsernameProblemLanguageResultExecution timeMemory
714601ismayilStranded Far From Home (BOI22_island)C++17
0 / 100
1093 ms13324 KiB
#include <bits/stdc++.h>
#define ll long long
//#define endl '\n'
using namespace std;
const int MAX = 2e5 + 5;
vector<int> adj[MAX];
int color[MAX], sum[MAX];
int s[MAX], ans[MAX];
void bfs(int st){
    sum[st] = s[st];
    color[st] = 1;
    queue<int> q;
    q.push(st);
    while (!q.empty())
    {
        int u = q.front();
        q.pop();
        vector<pair<int, int>> d;
        for(auto v : adj[u]){
            if(!color[v]) d.push_back({s[v], v});
        }
        sort(d.begin(), d.end());
        for(auto i : d){
            if(i.first <= sum[st]){
                color[i.second] = 1;
                q.push(i.second);
                sum[st] += i.first;
            }
        }
    }
    
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int n, m;
    cin>>n>>m;
    int total = 0;
    for(int i = 1; i <= n; i++) cin>>s[i], total += s[i];
    for (int i = 1; i <= m; i++)
    {
        int u, v;
        cin>>u>>v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    for(int i = 1; i <= n; i++){
        memset(color, 0, sizeof(color));
        bfs(i);
        if(sum[i] == total) cout<<1;
        else cout<<0;
    }
    cout<<endl;
}
#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...