Submission #392098

#TimeUsernameProblemLanguageResultExecution timeMemory
392098sadBirmingham (COCI20_birmingham)C++14
70 / 70
225 ms11632 KiB
#include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back using namespace std; int n,m,k,qq; const int N=100090; vector<int>v[N]; queue<pair<int,int>>q; int dis[N],vis[N]; int ch(ll c,ll ds) { c*=(c+1);c/=2; c*=k; if(c>ds)return 0; return 1; } int main() { cin>>n>>m>>qq>>k; for(int i=0;i<qq;i++) { int x;cin>>x;q.push({x,0}); } for(int i=0;i<m;i++) { int x,y; cin>>x>>y; v[x].pb(y); v[y].pb(x); } while(!q.empty()) { pair<int,int>x=q.front(); q.pop(); if(vis[x.fi])continue; vis[x.fi]=1; dis[x.fi]=x.se; for(auto it:v[x.fi]) { if(vis[it])continue; q.push({it,x.se+1}); } } for(int i=1;i<n+1;i++) { int st=0,en=100090; while(st<en) { int mid=(st+en)/2; if(ch(mid,dis[i])) st=mid+1; else en=mid; } st--; ll c=(st)*(st+1); c/=2; c*=k; if(dis[i]>c)st++; cout<<st<<" "; } }
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...