Submission #750598

#TimeUsernameProblemLanguageResultExecution timeMemory
750598Rasoul006Stranded Far From Home (BOI22_island)C++17
10 / 100
1091 ms524288 KiB

#include <bits/stdc++.h>

#define endl "\n"

#define F first

#define S second

#define pb push_back

#define all(x) x.begin() , x.end()

#define mm(dp , val) memset (dp , val , sizeof dp)

#define mid ((r+l)>>1)

#define lx (n<<1)

#define rx ((n<<1)|1)

#define low (i&(-i))

#define lb lower_bound

#define ub upper_bound

#define no void (cout << "NO" << endl)

#define one void (cout << "-1" << endl)

#define zer void (cout << "0" << endl)

#define yes void (cout << "YES" << endl)

typedef long long ll;

using namespace std;

const int logn = 26 ;

const int N = 1e6+5;

const int mod = 1e9+7;

const long long oo = 4557430888798830399 ;

ll dx[] = {0 , 0 , 1 , -1};
ll dy[] = {1 , -1 , 0 , 0};

ll n , m , a[N] , pa[N] , sz[N] ;

vector <ll> g[N] ;

string s ;

void dfs (ll u , ll p)
{
    pa[u] = p ;

    sz[u] = a[u] ;

    for (auto it : g[u])
    {
        if (it == p) continue ;

        dfs(it , u) ;
        sz[u] += sz[it] ;
    }

}

void dfs2 (ll u , ll p)
{
    s[u-1] = '1' ;

    for (auto it : g[u])
    {
        if (sz[it] < a[u] || it == p) continue ;
        dfs2 (it , u) ;
    }
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

    cin >> n >> m ;

    for (int i = 1 ; i<=n ; i++)
        cin >> a[i] , s += '0' ;

    for (int i = 0 ; i<m ; i++)
    {
        ll u , v ;
        cin >> u >> v ;
        g[u].pb(v) ;
        g[v].pb(u) ;
    }

    dfs (1 , 1) ;

    dfs2 (1 , 1) ;


    cout << s << endl ;

    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...