Submission #733129

#TimeUsernameProblemLanguageResultExecution timeMemory
733129vjudge1Birmingham (COCI20_birmingham)C++17
70 / 70
139 ms16536 KiB
#include<bits/stdc++.h>
#define int long long
#define MOD 1000000007
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

using namespace std;

vector<int>v[100005];
int ans[100005],vis[100005];

int32_t main(){
	fast;
	int n,m,x,k;
	cin>>n>>m>>x>>k;
	vector<int>v2;
	for(int i=0;i<=100000;i++)v2.pb(i*(i+1)/2*k);
	queue<pair<int,int>>q;
	while(x--){
		int y;
		cin>>y;
		q.push({y,0});
	}
	for(int i=0;i<m;i++){
		int a,b;
		cin>>a>>b;
		v[a].pb(b);
		v[b].pb(a);
	}
	while(!q.empty()){
		int node=q.front().ff;
		int d=q.front().ss;
		q.pop();
		if(vis[node])continue;
		vis[node]=1;
		int ind=lower_bound(all(v2),d)-v2.begin();
		ans[node]=ind;
		for(auto i:v[node]){
			if(vis[i])continue;
			q.push({i,d+1});
		}
	}
	for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
	cout<<endl;
}
#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...