#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll inf = 1e15;
ll N, M, S, A, B;
vector<ll> adj[100001], adj2[100001];
ll dist1[100001];
ll dist2[100001];
bool vis[100001] = {};
void solve()
{
cin >> N >> M >> S >> A >> B;
for(ll i = 0; i < M; i++)
{
ll a, b; cin >> a >> b;
adj[a].push_back(b), adj[b].push_back(a);
}
// bfs1
for(ll i = 1; i <= N; i++) dist1[i] = -1;
dist1[S] = 0;
queue<ll> qu; qu.push(S);
while(!qu.empty())
{
auto v = qu.front(); qu.pop();
for(auto& u : adj[v]) if(dist1[u] == -1) dist1[u] = dist1[v] + 1, qu.push(u);
}
// bfs2
for(ll i = 1; i <= N; i++) dist2[i] = -1;
dist2[S] = 0; vis[S] = true;
qu.push(S);
while(!qu.empty())
{
auto v = qu.front(); qu.pop();
for(auto& u : adj[v])
{
for(auto& i : adj2[u]) {
if(vis[i]) continue;
if(binary_search(adj[v].begin(), adj[v].end(), i)) continue;
dist2[i] = dist2[v] + 1; vis[i] = true;
qu.push(i);
}
vector<ll> tmp;
for(auto& i : adj2[u]) if(!vis[i]) tmp.push_back(i);
swap(adj2[u], tmp);
}
}
for(ll i = 1; i <= N; i++)
{
if(dist1[i] % 2 == 0) cout << min(A * dist1[i], B * (dist1[i] / 2)) << "\n";
else cout << min({A * dist1[i], B * (dist1[i] / 2) + A, B * dist2[i]}) << "\n";
}
}
int main()
{
cin.tie(0)->sync_with_stdio(0);
solve();
return 0;
}
| # | 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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |