Submission #1301360

#TimeUsernameProblemLanguageResultExecution timeMemory
1301360yigzoPrice List (POI13_cen)C++20
0 / 100
27 ms8212 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...