#include <bits/stdc++.h>
using namespace std;
const int mxN=1e5;
int n, m, k, a, b, eu[mxN], ev[mxN], qu[mxN], qt, d[mxN];
vector<int> adj[mxN], ts[mxN], adj2[mxN];
bool c[mxN];
priority_queue<array<int, 2>, vector<array<int, 2>>, greater<array<int, 2>>> pq;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> k >> a >> b, --k;
for(int i=0; i<m; ++i) {
cin >> eu[i] >> ev[i], --eu[i], --ev[i];
adj[eu[i]].push_back(i);
adj[ev[i]].push_back(i);
}
memset(d, 0x3f, 4*n);
if(b>=a) {
qu[qt++]=k;
d[k]=0;
for(int qh=0; qh<n; ++qh) {
int u=qu[qh];
for(int e : adj[u]) {
int v=u^eu[e]^ev[e];
if(d[v]>d[u]+1) {
qu[qt++]=v;
d[v]=d[u]+1;
}
}
}
for(int i=0; i<n; ++i)
cout << d[i]/2*min(2*a, b)+d[i]%2*a << "\n";
return 0;
}
for(int i=0; i<n; ++i) {
for(int e : adj[i])
c[i^eu[e]^ev[e]]=1;
for(int e1 : adj[i]) {
int v=i^eu[e1]^ev[e1];
if(array<int, 2>{adj[i].size(), i}<array<int, 2>{adj[v].size(), v})
continue;
for(int e2 : adj[v])
if(c[v^eu[e2]^ev[e2]])
ts[e1].push_back(v^eu[e2]^ev[e2]);
}
for(int e : adj[i])
c[i^eu[e]^ev[e]]=0;
adj2[i]=adj[i];
}
d[k]=0;
pq.push({0, k});
while(pq.size()) {
array<int, 2> u=pq.top();
pq.pop();
if(d[u[1]]<u[0])
continue;
for(int e1 : adj[u[1]]) {
int v=u[1]^eu[e1]^ev[e1];
if(d[v]>u[0]+a) {
d[v]=u[0]+a;
pq.push({d[v], v});
}
c[u[1]]=1;
for(int t : ts[e1])
c[t]=1;
vector<int> na;
for(int e2 : adj2[v]) {
int w=v^eu[e2]^ev[e2];
if(c[w]) {
na.push_back(e2);
continue;
}
if(d[w]>u[0]+b) {
d[w]=u[0]+b;
pq.push({d[w], w});
}
}
adj2[v]=na;
c[u[1]]=0;
for(int t : ts[e1])
c[t]=0;
}
}
for(int i=0; i<n; ++i)
cout << d[i] << "\n";
}
Compilation message
cen.cpp: In function 'int main()':
cen.cpp:43:32: warning: narrowing conversion of 'adj[i].std::vector<int>::size()' from 'std::vector<int>::size_type {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
if(array<int, 2>{adj[i].size(), i}<array<int, 2>{adj[v].size(), v})
~~~~~~~~~~~^~
cen.cpp:43:64: warning: narrowing conversion of 'adj[v].std::vector<int>::size()' from 'std::vector<int>::size_type {aka long unsigned int}' to 'int' inside { } [-Wnarrowing]
if(array<int, 2>{adj[i].size(), i}<array<int, 2>{adj[v].size(), v})
~~~~~~~~~~~^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
7416 KB |
Output is correct |
2 |
Correct |
7 ms |
7416 KB |
Output is correct |
3 |
Correct |
7 ms |
7432 KB |
Output is correct |
4 |
Correct |
8 ms |
7448 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7448 KB |
Output is correct |
2 |
Correct |
7 ms |
7492 KB |
Output is correct |
3 |
Correct |
7 ms |
7508 KB |
Output is correct |
4 |
Correct |
7 ms |
7584 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7712 KB |
Output is correct |
2 |
Correct |
8 ms |
7712 KB |
Output is correct |
3 |
Correct |
8 ms |
7712 KB |
Output is correct |
4 |
Correct |
7 ms |
7712 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
8684 KB |
Output is correct |
2 |
Correct |
12 ms |
8684 KB |
Output is correct |
3 |
Correct |
24 ms |
9084 KB |
Output is correct |
4 |
Correct |
15 ms |
9084 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
49 ms |
11644 KB |
Output is correct |
2 |
Correct |
25 ms |
11644 KB |
Output is correct |
3 |
Correct |
54 ms |
11644 KB |
Output is correct |
4 |
Correct |
34 ms |
11644 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
86 ms |
14712 KB |
Output is correct |
2 |
Correct |
43 ms |
14712 KB |
Output is correct |
3 |
Correct |
148 ms |
16256 KB |
Output is correct |
4 |
Correct |
55 ms |
16256 KB |
Output is correct |
5 |
Correct |
92 ms |
17376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
115 ms |
17984 KB |
Output is correct |
2 |
Correct |
39 ms |
17984 KB |
Output is correct |
3 |
Correct |
162 ms |
19020 KB |
Output is correct |
4 |
Correct |
64 ms |
19020 KB |
Output is correct |
5 |
Correct |
108 ms |
20416 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
127 ms |
21392 KB |
Output is correct |
2 |
Correct |
51 ms |
21392 KB |
Output is correct |
3 |
Correct |
161 ms |
21392 KB |
Output is correct |
4 |
Correct |
55 ms |
21392 KB |
Output is correct |
5 |
Correct |
140 ms |
23296 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
127 ms |
23296 KB |
Output is correct |
2 |
Correct |
63 ms |
23296 KB |
Output is correct |
3 |
Correct |
170 ms |
23460 KB |
Output is correct |
4 |
Correct |
51 ms |
23460 KB |
Output is correct |
5 |
Correct |
106 ms |
26068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
113 ms |
26068 KB |
Output is correct |
2 |
Correct |
63 ms |
26068 KB |
Output is correct |
3 |
Correct |
155 ms |
26068 KB |
Output is correct |
4 |
Correct |
60 ms |
26068 KB |
Output is correct |
5 |
Correct |
132 ms |
28768 KB |
Output is correct |