#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int d[N],tb[N];
bool vs[N];
vector<int> adj[N];
queue<int> q;
signed main(){
int n,m,qq,k,mx;
cin>>n >>m >>qq >>k;
tb[0]=0;
for(int i=1;tb[i-1]<=n;i++){
tb[i]=tb[i-1]+(k*i);
mx=max(i,mx);
}
//day[i] go not exceed i
for(int i=0;i<qq;i++){
int inp;
cin>>inp;
vs[inp]=true;
q.push(inp);
}
for(int i=0;i<m;i++){
int u,v;
cin>>u >>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
while(!q.empty()){
int u=q.front();
q.pop();
for(auto v:adj[u]){
if(vs[v]) continue;
vs[v]=true;
q.push(v);
d[v]=d[u]+1;
}
}
for(int i=1;i<=n;i++){
int ind=lower_bound(tb,tb+mx+1,d[i])-tb;
cout<<ind <<" ";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |