Submission #1165682

#TimeUsernameProblemLanguageResultExecution timeMemory
1165682shinozBirmingham (COCI20_birmingham)C++20
70 / 70
81 ms8464 KiB
/*

        I n u z u k a  S h i n o -w-
    
*/
#include <bits/stdc++.h>
using namespace std;


#define FILE(name) freopen(name".inp", "r", stdin), freopen(name".out", "w", stdout)
#define FOR(i, x, n) for (int i = x; i <= n; ++i)
#define FOD(i, x, n) for (int i = x; i >= n; --i)
#define REP(i, n) for (int i = 0; i < n; ++i)
#define ALL(x) (x).begin(), (x).end()
#define bit(n, i) ((n >> i) & 1)


#define fi first
#define se second
#define ll long long
#define pb push_back
#define ii pair<int, int>


const int N = 1e3 + 5;
const int M = 1e5 + 5;
const int MOD = 1e9 + 7;


bool vis[M];
int n, m, q, k;
int d[M], ans[M];
vector<int> a[M];
vector<int> knowed;

void bfs(){
    queue<int> q;

    for (int x: knowed) q.push(x);

    while (q.size()){
        int u = q.front(); q.pop();

        for (int v: a[u]){
            if (vis[v]) continue;

            vis[v] = 1;

            d[v] = d[u] + 1;

            q.push(v);
        }
    }
}
int main(){
    cin.tie(0) -> sync_with_stdio(0);

    cin >>n >>m >>q >>k;

    while (q--){
        int x; cin >>x;

        vis[x] = 1;
        knowed.pb(x);
    }

    while (m--){
        int u, v; cin >>u >>v;

        a[u].pb(v); a[v].pb(u);
    }

    bfs();

    int step = 1, x = 1;

    while (step < n){
        FOR(d, step, min(n, step + x * k))
            ans[d] = x;

        step += x * k; ++x;
    }

    FOR(u, 1, n) cout <<ans[d[u]] <<' ';

    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...