Submission #845155

#TimeUsernameProblemLanguageResultExecution timeMemory
845155vjudge1Birmingham (COCI20_birmingham)C++17
70 / 70
79 ms14716 KiB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>
using namespace std;
#define int long long
 
#define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
    #define OPEN freopen(".in", "r", stdin); \
                 freopen(".out", "w", stdout);
#else
    #define OPEN void(23);
#endif

void solve()
{
    int n, m, q, k; cin >> n >> m >> q >> k;
    vector <int> mans(q);
    for(int &i : mans) cin >> i;

    vector <int> adj[n +1];
    for(int i = 1; i <= m; i++)
    {
        int u, v; cin >> u >> v;
        adj[u].emplace_back(v);
        adj[v].emplace_back(u);
    }

    vector <int> cev(n +1, -1);
    queue <pair <int, int>> que;
    for(int &i : mans) que.emplace(i, 0);
    while(!que.empty())
    {
        auto [x, d] = que.front();
        que.pop();
        if(cev[x] != -1) continue;
        cev[x] = d;

        for(int &child : adj[x])
        {
            que.emplace(child, d +1);
        }
    }

    auto find = [&](int x) -> int
    {
        int _k = k;
        int i = 0, j = 0;
        while(j < x) i++, j += k, k += _k;
        k = _k;

        return i;
    };

    for(int i = 1; i <= n; i++) cout << find(cev[i]) << " ";

    return;
}

int32_t main()
{
    OPEN;

    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int t = 1; //cin >> t;
    while(t--)
    {
        solve();
    }
}
#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...