제출 #1323080

#제출 시각아이디문제언어결과실행 시간메모리
1323080simona1230Stranded Far From Home (BOI22_island)C++17
0 / 100
313 ms30908 KiB
#include<bits/stdc++.h> using namespace std; long long n,m; pair<long long,long long> a[200001]; vector<long long> v[200001]; long long b[200001]; void read() { cin>>n>>m; for(long long i=1;i<=n;i++) { cin>>a[i].first; a[i].second=i; b[i]=a[i].first; } for(long long i=1;i<=m;i++) { long long x,y; cin>>x>>y; v[x].push_back(y); v[y].push_back(x); } } long long p[200001]; int maxx[200001]; int sz2[200001]; long long f(long long i) { if(p[i]==i)return i; return f(p[i]); } vector<long long> g[200001]; long long in[200001]; void unite(long long i,long long j) { int v1=i; i=f(i); j=f(j); if(i==j)return; g[v1].push_back(maxx[j]); in[maxx[j]]++; if(sz2[i]<sz2[j])swap(i,j); maxx[j]=v1; sz2[i]+=sz2[i]; p[j]=p[i]; } void solve() { for(long long i=1;i<=n;i++) p[i]=i,maxx[i]=i,sz2[i]=1; sort(a+1,a+n+1); for(long long h=1;h<=n;h++) { long long i=a[h].second; for(long long j=0;j<v[i].size();j++) { long long nb=v[i][j]; //cout<<i<<" ++ "<<nb<<endl; if(b[nb]<=b[i])unite(i,nb); } } } long long sz[200001]; void dfs(long long i) { sz[i]=b[i]; for(long long j=0;j<g[i].size();j++) { long long nb=g[i][j]; dfs(nb); sz[i]+=sz[nb]; } } long long ans[200001]; void dfsans(long long i) { for(long long j=0;j<g[i].size();j++) { long long nb=g[i][j]; if(sz[nb]>=b[i]) { ans[nb]=1; dfsans(nb); } } } int main() { read(); solve(); long long ver; for(long long i=1;i<=n;i++) { //cout<<in[i]<<" "; if(in[i]==0) { ver=i; } } //cout<<endl; //cout<<"! "<<ver<<endl; dfs(ver); ans[ver]=1; dfsans(ver); for(long long i=1;i<=n;i++) cout<<ans[i]; cout<<endl; return 0; } /* 10 11 2 2 4 5 1 3 1 1 1 1 1 2 2 3 1 3 1 4 3 4 3 6 6 7 3 5 5 8 5 9 5 10 */
#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...