#include <bits/stdc++.h>
using namespace std;
#define all(v) (v).begin(), (v).end()
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];
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);
}
for(ll i = 1; i <= N; i++) sort(all(adj[i]));
// bfs1
for(ll i = 1; i <= N; i++) dist1[i] = inf;
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] == inf) dist1[u] = dist1[v] + 1, qu.push(u);
}
// bfs2
for(ll i = 1; i <= N; i++) adj2[i] = adj[i];
for(ll i = 1; i <= N; i++) dist2[i] = inf;
dist2[S] = 0;
qu.push(S);
while(!qu.empty())
{
auto v = qu.front(); qu.pop();
for(auto& u : adj[v])
{
for(auto& i : adj2[u]) if(dist2[i] == inf) dist2[i] = dist2[v] + 1, qu.push(i);
vector<ll> tmp;
for(auto& i : adj2[u]) if(dist2[i] == inf) 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... |