//
// Created by liasa on 29/01/2026.
//
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define v vector
#define lp(i, s, e) for (ll i = s; i < e; ++i)
#define pll pair<ll, ll>
ll n, m, k;
v<v<ll>> g;
v<ll> loc;
v<ll> s;
ll stop_cnt = 0;
void bfs(ll node, v<ll> &dist, v<ll> &touch) {
dist[node] = 0;
queue<ll> q;
q.push(node);
while (!q.empty()) {
auto nd = q.front();
ll dis = dist[nd];
q.pop();
for (auto it : g[nd]) {
if (dist[it] > dis + 1) {
dist[it] = dis + 1;
touch[it] = touch[node];
if (s[it] == 1)
touch[it] = 1;
q.push(it);
} else if (dist[it] == dis + 1 && touch[it] == 1 && touch[nd] == 0) {
touch[it] = 0;
q.push(it);
}
}
}
}
void bfs2(ll node, v<ll> &dist) {
dist[node] = 0;
queue<ll> q;
q.push(node);
while (!q.empty()) {
auto nd = q.front();
ll dis = dist[nd];
q.pop();
if (s[nd] == 1)
continue;
for (auto it : g[nd]) {
if (dist[it] > dis + 1) {
dist[it] = dis + 1;
q.push(it);
}
}
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> k;
g.resize(n);
loc.resize(k);
s.resize(n);
lp(i, 0, m) {
ll a, b;
cin >> a >> b;
a--;
b--;
g[a].push_back(b);
g[b].push_back(a);
}
string s1;
cin >> s1;
ll point = 0;
lp(i, 0, n) {
s[i] = (s1[i] == '1');
if (s[i] == 1) {
stop_cnt++;
point = i;
}
}
lp(i, 0, k) {
cin >> loc[i];
loc[i]--;
}
v<ll> dis(n, 1e18), touch(n, 0), nn(n, 0);
bfs(loc[0], dis, touch);
v<ll> dis_from_stp(n, 1e18);
bfs(loc[point], dis_from_stp, nn);
v<ll> dis3(n, 1e18);
bfs2(loc[0], dis3);
ll sumi = 0;
lp(i, 1, k) { sumi += dis_from_stp[loc[i]]; }
lp(i, 0, n) {
ll op1 = dis[i];
ll tch = touch[i];
ll ans = 1e18;
if (tch) {
ans = dis[i] + sumi;
} else {
ans = dis[i];
}
ans = min(ans, dis3[i]);
cout << ans << '\n';
// ll op1 = cout << dis[i] << '\n';
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |