Submission #876232

#TimeUsernameProblemLanguageResultExecution timeMemory
8762328pete8Stranded Far From Home (BOI22_island)C++14
0 / 100
84 ms12980 KiB
#include<iostream> #include<stack> #include<map> #include<vector> #include<string> #include<unordered_map> #include <queue> #include<cstring> #include<limits.h> #include<cmath> #include<set> #include<algorithm> #include<bitset> #include <iomanip> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; #define ll long long #define f first #define endl "\n" #define s second #define pii pair<int,int> #define ppii pair<int,pii> #define vi vector<int> #define pb push_back //#define p push #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define F(n) for(int i=0;i<n;i++) #define lb lower_bound #define ub upper_bound #define fastio ios::sync_with_stdio(false);cin.tie(NULL); using namespace std; //#pragma GCC optimize ("03,unroll-lopps") #define int long long const int mxn=2e5,inf=1e9; vector<ppii>e; int val[mxn+10],n,m,pa[mxn+10],sum[mxn+10]; bool ans[mxn+10]; int find(int u){ if(pa[u]==u)return u; int k=find(pa[u]); ans[u]|=ans[pa[u]]; return pa[u]=k; } void merg(int u,int v){ int a=find(u),b=find(v); if(a==b)return; if(sum[b]<val[a])return void(ans[b]=true); pa[b]=a,sum[a]+=sum[b]; } int32_t main(){ fastio cin>>n>>m; for(int i=1;i<=n;i++)cin>>val[i],sum[i]=val[i],pa[i]=i; for(int i=0;i<m;i++){ int a,b;cin>>a>>b; if(val[a]<val[b])swap(a,b); e.pb({val[a],{a,b}}); } sort(all(e)); for(auto i:e)merg(i.s.f,i.s.s); for(int i=1;i<=n;i++)find(i),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...