QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#533088 | #8643. Board Game | Nevll# | 3 | 22ms | 8080kb | C++14 | 2.7kb | 2024-08-25 17:04:56 | 2024-08-25 17:04:57 |
Judging History
answer
# include <bits/stdc++.h>
# define ll long long
# define ld long double
# define pii pair<int, int>
# define fi first
# define se second
using namespace std;
// complexity : K^2 + 2K * (M log M)
int num[50001], N, M, K;
vector<int> edge[50001];
string S;
bool stop[50001], vis[150011];
ll dist[2][50001], ds[2][50001], ad[3]; // 0 = dist ke yg add 1, 1 dist yg ke add 2
// kalo 1 ada yg dist 0, buat jadi 2
// kalo 0 ada yg dist 0, buat jadi 1
void build() {
for(int i=1;i<=N;i++) {
dist[0][i] = dist[1][i] = 1e9;
}
priority_queue<pii> PQ;
for(int i=1;i<=N;i++) {
if(!stop[i]) continue;
bool cek = 0;
for(auto p : edge[i]) {
if(stop[p]) cek = 1;
}
if(cek) PQ.push({0, i});
}
for(int i=1;i<=N;i++) vis[i] = 0;
while(PQ.size()) {
pii x = PQ.top();
PQ.pop();
if(vis[x.se]) continue;
vis[x.se] = 1;
dist[0][x.se] = -x.fi;
for(auto p : edge[x.se]) {
if(!vis[p]) {
if(!stop[p]) PQ.push({x.fi - 1, p});
else PQ.push({x.fi, p});
}
}
}
for(int i=1;i<=N;i++) vis[i] = 0;
for(int i=1;i<=N;i++) {
if(stop[i]) PQ.push({0, i});
}
while(PQ.size()) {
pii x = PQ.top();
PQ.pop();
if(vis[x.se]) continue;
vis[x.se] = 1;
if(x.fi <= -1) dist[1][x.se] = -x.fi;
else dist[1][x.se] = 2;
for(auto p : edge[x.se]) {
if(!vis[p]) {
PQ.push({x.fi - 1, p});
}
}
}
for(int i=1;i<=N;i++) {
if(stop[i]) dist[0][i]++;
}
for(int i=2;i<=K;i++) {
ad[1] += min(dist[0][num[i]], dist[1][num[i]]);
ad[2] += min(dist[0][num[i]] + 1ll, dist[1][num[i]] + 2ll);
}
// cout<<ad[0]<<" "<<ad[1]<<" "<<ad[2]<<endl;
}
ll ans[50001];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>N>>M>>K;
for(int i=0;i<M;i++) {
int a, b;
cin>>a>>b;
edge[a].push_back(b);
edge[b].push_back(a);
}
cin>>S;
for(int i=0;i<N;i++) {
stop[i + 1] = S[i] - '0';
}
for(int i=1;i<=K;i++) cin>>num[i];
build();
for(int i=1;i<=N;i++) ans[i] = 1e18;
priority_queue< pair< pair<ll, int>, int> > PQ;
for(int i=0;i<=3*N;i++) vis[i] = 0;
PQ.push({{0, 0}, num[1]});
while(PQ.size()) {
pair<pair<ll, int>, int> x = PQ.top();
PQ.pop();
// cout<<x.se<<" "<<x.fi.se<<endl;
if(vis[3 * x.se + x.fi.se]) continue;
vis[3 * x.se + x.fi.se] = 1;
ans[x.se] = min(ans[x.se], -x.fi.fi + ad[-x.fi.se]);
// cout<<"ans : "<<ans[x.se]<<endl;
for(auto p : edge[x.se]) {
if(stop[x.se] && x.se != num[1]) {
int val = x.fi.se - 1;
if(val > 2) continue;
if(!vis[3 * p + val]) PQ.push({{x.fi.fi - 1, val}, p});
} else {
if(!vis[3 * p + x.fi.se]) PQ.push({{x.fi.fi - 1, x.fi.se}, p});
}
}
}
for(int i=1;i<=N;i++) cout<<ans[i]<<"\n";
}
详细
Subtask #1:
score: 3
Accepted
Test #1:
score: 3
Accepted
time: 2ms
memory: 5812kb
input:
3000 3000 3000 2378 2385 1560 2450 189 2980 44 1140 425 1843 167 1563 439 2010 7 951 1311 1370 1305 2085 150 1600 16 2469 431 2674 317 2191 1845 2918 2195 2917 1210 1577 125 1049 911 1160 504 2060 376 2420 1676 2969 1343 1576 284 1869 835 1989 273 1330 234 1906 1482 1524 2415 2460 388 2897 2177 2600...
output:
76 52 40 54 67 54 62 36 44 32 60 61 58 29 34 22 64 25 31 33 14 79 80 58 68 29 67 69 47 60 48 55 45 11 24 51 17 24 47 29 50 57 89 54 62 63 55 61 7 41 61 27 64 60 63 55 44 43 39 48 57 47 65 65 55 43 51 48 22 57 47 28 52 51 50 61 41 61 69 50 41 53 42 58 45 26 60 52 30 56 47 56 32 55 44 58 56 71 69 41 6...
result:
ok 3000 lines
Test #2:
score: 3
Accepted
time: 11ms
memory: 6744kb
input:
30000 30000 30000 11640 15443 5731 12870 5066 28442 11803 29263 2399 20658 4911 11282 676 1962 10390 19686 6117 6722 22155 28614 2932 14721 11403 13488 6697 22434 19113 26975 20347 20663 15743 16072 19116 25652 10891 19389 1373 27384 14607 29107 6192 29223 7196 10267 15467 16280 21828 26032 365 982 ...
output:
2610 3673 15 7659 10149 8209 878 4102 7582 10483 6418 6826 11546 12814 11394 7792 9097 7484 14575 913 5802 584 8172 961 7434 8828 14665 7642 14032 6284 8299 3040 9576 4953 47 13721 10634 3362 9103 4901 4022 11866 14548 5132 9252 13165 143 9494 2845 13149 5616 3023 13560 12315 8126 2002 5706 10657 14...
result:
ok 30000 lines
Test #3:
score: 3
Accepted
time: 17ms
memory: 7968kb
input:
50000 49999 50000 23237 38489 46903 47222 463 17722 5061 37126 21771 23294 4851 25450 408 41933 1298 5353 8952 44686 5842 17741 15835 33052 16401 17274 33117 33174 7070 24079 22424 46115 5336 6340 35165 36940 3308 36325 12014 20182 391 48629 9736 42693 5246 46582 22861 48389 3338 6669 31354 49668 11...
output:
8988 372 12633 8934 15728 15677 431 10910 20467 16345 10441 16923 12383 15090 11112 19353 21485 9819 17810 3071 41 99 8479 9616 1173 13790 1142 14800 19055 675 1086 2353 22330 18271 2373 11286 20247 21236 18133 11260 2792 19399 9049 18056 14190 3523 22890 19479 14288 9335 561 19226 12836 11409 8485 ...
result:
ok 50000 lines
Test #4:
score: 3
Accepted
time: 11ms
memory: 8080kb
input:
49900 50000 100 21419 22725 19367 26559 4942 22766 16196 32249 12443 43575 17415 32668 3559 30282 6024 31186 4553 32107 1085 24970 27857 48472 15126 48937 22784 33748 16961 18301 21066 30382 41567 46191 17677 42298 2910 32294 14609 16464 14131 44143 8413 13472 17266 18767 567 48263 2410 29825 22159 ...
output:
4729 6824 18742 805 16289 4349 1296 5007 15785 15606 18374 4228 1685 19748 16689 7552 13232 5985 19529 7256 13074 6094 12823 7464 19302 3985 5081 4794 2513 6637 10664 6726 11115 11493 10542 4882 2626 10108 17287 690 8100 6464 10436 3789 14356 11646 18179 20174 19124 1188 20268 1232 4167 127 1224 166...
result:
ok 49900 lines
Subtask #2:
score: 0
Wrong Answer
Test #5:
score: 0
Wrong Answer
time: 3ms
memory: 6612kb
input:
3000 3000 3000 1391 1542 299 1578 1346 1528 46 1259 1513 2261 201 1717 56 1635 199 2327 847 882 1977 2161 465 1954 1723 2580 482 2105 906 2207 747 2742 2026 2845 1565 1809 295 311 278 2408 1215 2583 520 832 464 638 1223 1346 1799 2703 1022 2717 887 2160 619 2109 165 2478 879 1343 319 2463 56 815 109...
output:
25 47 29 15 51 29 39 23 47 39 23 39 27 39 5 39 19 26 30 31 43 32 39 86790 24 13 86787 52 31 24 36 22 33 31 32 22 36 43 24 25 30 32 86793 31 49 34 31 31 39 21 33 86793 34 40 23 43 44 37 32 37 48 86790 33 86783 42 46 28 86787 15 47 43 42 41 39 38 14 34 42 33 86775 24 37 36 12 14 28 47 43 34 27 45 41 1...
result:
wrong answer 230th lines differ - expected: '50', found: '86802'
Subtask #3:
score: 0
Wrong Answer
Test #13:
score: 0
Wrong Answer
time: 0ms
memory: 4924kb
input:
3000 3000 3000 997 1695 884 1068 654 1853 6 520 947 2382 787 2407 818 1795 2347 2718 46 1560 1180 2169 582 1881 1080 1766 770 2877 365 419 365 749 1315 2536 223 1867 216 545 1311 1952 1598 2796 141 620 1681 2938 301 2204 866 1710 872 961 369 466 2160 2936 2295 2359 1310 1744 1572 2088 1111 2618 1680...
output:
357 518 350 113 154 370 807992 808248 1395 807862 808596 215 807944 9 808144 488 375 195 808376 149 808647 808218 303 508 808491 19 808194 807920 807973 807987 808426 808521 555 808025 80 50 807858 808635 149 808195 140 808457 808263 807941 455 198 180 808087 472 71 112 169 331 807874 807940 31 8081...
result:
wrong answer 7th lines differ - expected: '718', found: '807992'
Subtask #4:
score: 0
Wrong Answer
Test #23:
score: 19
Accepted
time: 3ms
memory: 6216kb
input:
1500 3000 2 432 1120 324 1221 37 294 50 931 588 1149 178 887 460 517 268 533 649 935 123 1291 642 1025 1145 1489 630 1375 163 1407 842 1004 155 1300 296 1049 380 840 215 1224 283 981 211 1056 75 725 325 1437 591 680 1179 1253 876 1425 382 1230 1065 1436 612 784 121 770 349 633 140 1168 443 1019 103 ...
output:
6 6 7 4 5 5 6 3 5 7 5 6 5 5 5 6 6 6 3 5 5 6 3 6 5 6 3 3 6 6 5 6 4 5 7 6 6 6 5 2 5 5 6 5 4 7 4 4 5 5 5 7 6 5 5 3 6 6 5 5 6 5 6 4 5 6 4 7 3 6 6 4 5 5 4 7 6 6 6 7 5 3 5 6 4 6 4 6 4 6 4 6 5 6 3 4 6 4 5 3 6 5 6 7 4 6 5 6 7 5 4 6 5 5 6 6 6 4 5 5 6 4 4 6 6 6 6 6 6 6 6 5 6 6 5 6 4 6 5 6 6 6 6 5 7 4 6 4 6 5 ...
result:
ok 1500 lines
Test #24:
score: 0
Wrong Answer
time: 2ms
memory: 6060kb
input:
3000 2999 5 1183 2619 603 1077 245 1639 988 1253 70 2760 2292 2975 2483 2998 851 1914 214 968 1902 2025 1636 2835 62 2320 2082 2708 267 1972 613 2739 1273 2062 2173 2928 1028 1532 417 2184 291 899 608 2280 922 1566 670 1218 1023 1213 1193 2777 1142 2410 532 1558 67 1473 1041 1652 146 1877 727 2468 5...
output:
1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 1000000000000000000 26 1000000000000000000 26 20 1000000000000000000 27 1000000000000000000 10000000...
result:
wrong answer 1st lines differ - expected: '79', found: '1000000000000000000'
Subtask #5:
score: 0
Wrong Answer
Test #44:
score: 0
Wrong Answer
time: 22ms
memory: 7876kb
input:
50000 49999 2 25634 31370 8027 24849 12312 23307 3731 32856 28725 29829 23424 44542 9950 43281 17138 22049 29393 31047 24061 46387 861 3924 12114 24868 29242 36744 5090 11267 3946 26100 7151 22151 27368 49971 43548 44917 25373 45846 4117 43120 24675 34139 9043 21081 29857 41278 37558 41510 11300 402...
output:
1000000000000000000 120 1000000000000000000 1000000000000000000 68 38 72 1000000000000000000 1000000000000000000 123 1000000000000000000 95 61 164 1000000000000000000 103 72 58 1000000000000000000 97 1000000000000000000 73 64 57 1000000000000000000 59 67 1000000000000000000 1000000000000000000 99 10...
result:
wrong answer 1st lines differ - expected: '114', found: '1000000000000000000'
Subtask #6:
score: 0
Skipped
Dependency #5:
0%
Subtask #7:
score: 0
Skipped
Dependency #4:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%