func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0), cout.tie(0);     cout << fixed << setprecision(15);     int N, M, S, K;     cin >> N >> M >> S >> K;     vector<int> type(N);     for (int i = 0; i < N; i++) {       cin >> type[i];       --type[i];     }     vector<vector<int>> adj(N);     for (int i = 0; i < M; i++) {       int u, v;       cin >> u >> v;       adj[u - 1].push_back(v - 1);       adj[v - 1].push_back(u - 1);     }     vector<vector<int>> opt(N);     for (int tp = 0; tp < S; tp++) {       vector<int> dist(N, -1);       queue<pair<int, int>> q;       for (int i = 0; i < N; i++) {         if (type[i] == tp) {           q.push({i, 0});           dist[i] = 0;         }       }       while (!q.empty()) {         int loc = q.front().first;         int tot = q.front().second;         q.pop();         for (int nbr : adj[loc]) {           if (dist[nbr] != -1) continue;           dist[nbr] = tot + 1;           q.push({nbr, tot + 1});         }       };       ;       for (int i = 0; i < N; i++) {         opt[i].push_back(dist[i]);       }     }     for (int i = 0; i < N; i++) {       sort((opt[i]).begin(), (opt[i]).end());       int ans = 0;       for (int j = 0; j < K; j++) {         ans += opt[i][j];       }       cout << ans <<    ;     }     cout << endl;     return 0;   }   