QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#507131 | #8643. Board Game | Max_s_xaM | 0 | 223ms | 7972kb | C++17 | 4.2kb | 2024-08-06 11:28:52 | 2024-08-06 11:28:52 |
Judging History
answer
#include <iostream>
#include <algorithm>
#include <queue>
typedef long long ll;
typedef double lf;
// #define DEBUG 1
struct IO
{
#define MAXSIZE (1 << 20)
#define isdigit(x) (x >= '0' && x <= '9')
char buf[MAXSIZE], *p1, *p2;
char pbuf[MAXSIZE], *pp;
#if DEBUG
#else
IO() : p1(buf), p2(buf), pp(pbuf) {}
~IO() {fwrite(pbuf, 1, pp - pbuf, stdout);}
#endif
#define gc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, MAXSIZE, stdin), p1 == p2) ? ' ' : *p1++)
#define blank(x) (x == ' ' || x == '\n' || x == '\r' || x == '\t')
template <typename T>
void Read(T &x)
{
#if DEBUG
std::cin >> x;
#else
bool sign = 0; char ch = gc(); x = 0;
for (; !isdigit(ch); ch = gc())
if (ch == '-') sign = 1;
for (; isdigit(ch); ch = gc()) x = x * 10 + (ch ^ 48);
if (sign) x = -x;
#endif
}
void Read(char *s)
{
#if DEBUG
std::cin >> s;
#else
char ch = gc();
for (; blank(ch); ch = gc());
for (; !blank(ch); ch = gc()) *s++ = ch;
*s = 0;
#endif
}
void Read(char &c) {for (c = gc(); blank(c); c = gc());}
void Push(const char &c)
{
#if DEBUG
putchar(c);
#else
if (pp - pbuf == MAXSIZE) fwrite(pbuf, 1, MAXSIZE, stdout), pp = pbuf;
*pp++ = c;
#endif
}
template <typename T>
void Write(T x)
{
if (x < 0) x = -x, Push('-');
static T sta[35];
int top = 0;
do sta[top++] = x % 10, x /= 10; while (x);
while (top) Push(sta[--top] ^ 48);
}
template <typename T>
void Write(T x, char lst) {Write(x), Push(lst);}
} IO;
#define Read(x) IO.Read(x)
#define Write(x, y) IO.Write(x, y)
#define Put(x) IO.Push(x)
using namespace std;
const int MAXN = 5e4 + 10;
int n, m, k, s[MAXN]; ll ans[MAXN];
vector <int> e[MAXN];
char tp[MAXN]; int val[MAXN];
int dis[MAXN];
inline void BFS1(int S)
{
static queue <int> q;
for (int i = 1; i <= n; i++) dis[i] = -1;
dis[S] = 0, q.push(S);
while (!q.empty())
{
int u = q.front(); q.pop();
for (auto v : e[u])
if (dis[v] == -1)
dis[v] = dis[u] + 1, q.push(v);
}
}
ll sum[MAXN];
ll d[MAXN]; int cnt[MAXN];
inline void BFS2(int s, int x)
{
static queue <int> q[2];
for (int i = 1; i <= n; i++) d[i] = 1e18, dis[i] = cnt[i] = 0;
d[s] = 0, q[0].push(s);
while (!q[0].empty() || !q[1].empty())
{
int u;
if (q[1].empty() || (!q[0].empty() && d[q[0].front()] < d[q[1].front()])) u = q[0].front(), q[0].pop();
else u = q[1].front(), q[1].pop();
for (auto v : e[u])
if (d[v] > d[u] + 1)
{
d[v] = d[u] + 1, dis[v] = dis[u] + 1, cnt[v] = cnt[u];
if (tp[v] == '1') cnt[v]++, d[v] += x, q[1].push(v);
else q[0].push(v);
}
}
}
int main()
{
#if DEBUG
#else
ios::sync_with_stdio(0), cin.tie(0);
#endif
Read(n), Read(m), Read(k);
for (int i = 1, u, v; i <= m; i++) Read(u), Read(v), e[u].push_back(v), e[v].push_back(u);
Read(tp + 1);
for (int i = 1; i <= k; i++) Read(s[i]);
for (int i = 1; i <= n; i++)
if (tp[i] == '1')
{
val[i] = 2;
for (auto v : e[i])
if (tp[v] == '1') { val[i] = 1; break; }
}
for (int i = 2; i <= k; i++)
{
BFS1(s[i]);
int mn[3] = {0, (int)2e9, (int)2e9};
for (int j = 1; j <= n; j++)
if (tp[j] == '1' && j != s[i])
mn[val[j]] = min(mn[val[j]], dis[j]);
if (tp[s[i]] == '1') mn[val[s[i]]] = min(mn[val[s[i]]], 2);
for (int j = 1; j <= n; j++) sum[j] += min(j + mn[1] - 1, 2 * j + mn[2] - 2);
}
for (int i = 1; i <= n; i++) ans[i] = 1e18; ans[s[1]] = 0;
for (int i = 0; i <= n; i++)
{
BFS2(s[1], i);
for (int j = 1; j <= n; j++)
if (j != s[1]) ans[j] = min(ans[j], sum[cnt[j] - (tp[j] == '1')] + dis[j]);
}
for (int i = 1; i <= n; i++) cout << ans[i] << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Time Limit Exceeded
Test #1:
score: 3
Accepted
time: 201ms
memory: 7800kb
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: 0
Time Limit Exceeded
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:
result:
Subtask #2:
score: 0
Time Limit Exceeded
Test #5:
score: 7
Accepted
time: 191ms
memory: 6416kb
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:
ok 3000 lines
Test #6:
score: 0
Time Limit Exceeded
input:
30000 30000 30000 15802 26734 1581 27129 4313 12830 7001 28197 5489 10268 11838 19275 11260 21410 3519 29279 932 23073 8888 28355 17227 29224 1060 5702 20326 25420 1598 14082 15716 27167 4982 19730 4497 8783 15068 19181 7588 9083 4816 21808 15694 24819 4716 27198 14003 15119 5397 11717 3612 20613 24...
output:
result:
Subtask #3:
score: 0
Time Limit Exceeded
Test #13:
score: 7
Accepted
time: 223ms
memory: 6316kb
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 718 974 1389 588 1322 215 670 9 870 488 375 195 1102 149 1373 944 303 508 1217 19 920 646 699 713 1152 1247 555 751 80 50 584 1361 149 921 140 1183 989 667 455 198 180 813 472 71 112 169 331 600 666 31 860 145 1090 207 496 654 825 1330 278 112 690 1152 885 1412 94 96 771 132 ...
result:
ok 3000 lines
Test #14:
score: 0
Time Limit Exceeded
input:
30000 30000 30000 5947 19048 4004 18741 10068 24221 13216 23775 14185 17633 2653 21744 87 19566 5657 19635 24673 28265 5039 14021 8019 20341 7620 25285 6719 8806 15262 25748 14231 28690 21585 29569 27254 27866 12665 29102 2884 11669 2014 11831 1927 26375 9676 21506 2114 28403 18249 27263 4937 8497 6...
output:
result:
Subtask #4:
score: 0
Wrong Answer
Test #23:
score: 19
Accepted
time: 17ms
memory: 7796kb
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: 95ms
memory: 7972kb
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:
79 79 73 72 58 44 91 58 84 78 57 26 82 33 20 109 42 73 114 63 87 59 75 42 87 117 71 56 97 17 29 87 105 40 107 144 44 41 83 101 22 13 88 97 19 40 71 70 15 113 89 97 64 90 66 112 28 88 127 56 50 17 115 17 69 83 92 23 48 136 50 53 77 71 88 87 93 54 25 15 112 69 73 30 72 66 10 66 88 67 67 90 74 78 75 28...
result:
wrong answer 36th lines differ - expected: '143', found: '144'
Subtask #5:
score: 0
Time Limit Exceeded
Test #44:
score: 0
Time Limit Exceeded
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:
result:
Subtask #6:
score: 0
Skipped
Dependency #5:
0%
Subtask #7:
score: 0
Skipped
Dependency #4:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
0%