func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 7;   int n, m, k, s, t;   vector<int> g[N];   int dis[N];   bool spc[N];   bool ok(int lim) {     priority_queue<pair<int, int> > stk;     fill_n(dis, n, INT_MAX);     dis[s] = 0;     stk.push({-dis[s], s});     while (!stk.empty()) {       int d, u;       tie(d, u) = stk.top();       stk.pop();       if (d != -dis[u] || -d >= lim) continue;       for (auto v : g[u]) {         if (dis[v] > dis[u] + 1) {           dis[v] = dis[u] + 1;           if (spc[v]) dis[v] = 0;           stk.push({-dis[v], v});         }       }     }     return dis[t] < INT_MAX;   }   int main() {     scanf( %d%d%d , &n, &m, &k);     for (int i = (0); i < (k); ++i) {       int p;       scanf( %d , &p);       p--;       spc[p] = true;     }     for (int i = (0); i < (m); ++i) {       int a, b;       scanf( %d%d , &a, &b);       a--;       b--;       g[a].push_back(b);       g[b].push_back(a);     }     scanf( %d%d , &s, &t);     s--;     t--;     int ans = -1;     for (int l = 1, r = n, mid = l + r >> 1; l <= r; mid = l + r >> 1)       ok(mid) ? r = (ans = mid) - 1 : l = mid + 1;     printf( %d , ans);     return 0;   }   