Submission #885186

#TimeUsernameProblemLanguageResultExecution timeMemory
885186vjudge1Birmingham (COCI20_birmingham)C++17
0 / 70
60 ms10708 KiB
#include <bits/stdc++.h> #define int long long #define pb push_back #define endl '\n' using namespace std; const int N = 1e5 + 5; int n,m,p,k,dist[N]; vector<int> g[N]; queue<int> q; bool vis[N]; void bfs(){ while(!q.empty()){ int x=q.front(); q.pop(); vis[x]=true; for(auto go: g[x]){ if(vis[go]) continue; dist[go]=dist[x]+1; vis[go]=true; q.push(go); //cout<<go<<" from "<<x<<" with "<<dist[go]<<endl; } } } int bs(int x){ int l=0, r=1e9, ans=-1; while(l<=r){ int m=l+(r-l)/2; if(m*(m+1)*k/2 >= x ){ ans=m; r=m-1; } else l=m+1; } return ans; } void solve(){ cin>>n>>m>>p>>k; for(int i=0;i<p;i++){ int x; cin>>x; q.push(x); } for(int i=0;i<m;i++){ int a,b; cin>>a>>b; g[a].pb(b); g[b].pb(a); } bfs(); for(int i=1;i<=n;i++){ cout<<bs(dist[i])<<" "; } } int32_t main(){ cin.tie(0)->sync_with_stdio(false); solve(); 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...
#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...