# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
285118 | 2020-08-28T10:28:24 Z | Plurm | Bitaro’s Party (JOI18_bitaro) | C++11 | 1677 ms | 338284 KB |
#include <bits/stdc++.h> using namespace std; const int THRESH = 400; vector<int> ord; vector<int> g[100005]; vector<int> rg[100005]; bool found[100005]; void dfs(int u){ if(found[u]) return; found[u] = true; for(int v : g[u]){ dfs(v); } ord.push_back(u); } vector<pair<int,int> > dp[100005]; // | dp[i] | <= THRESH. bool __used[100005]; vector<pair<int,int> > newVec; inline void __append(const pair<int,int>& x){ if(newVec.empty() || !__used[x.second]){ newVec.push_back(x); __used[x.second] = true; } } inline void merge(vector<pair<int,int> >& dest, vector<pair<int,int> > src){ newVec.reserve(THRESH); for(auto& v : src) v.first++; int ptr1 = 0; int ptr2 = 0; while(ptr1 < dest.size() && ptr2 < src.size() && newVec.size() < THRESH){ if(dest[ptr1] > src[ptr2]){ __append(dest[ptr1]); ptr1++; }else{ __append(src[ptr2]); ptr2++; } } while(newVec.size() < THRESH && ptr1 < dest.size()){ __append(dest[ptr1]); ptr1++; } while(newVec.size() < THRESH && ptr2 < src.size()){ __append(src[ptr2]); ptr2++; } for(auto u : newVec) __used[u.second] = false; swap(dest, newVec); newVec.clear(); } bool isBusy[100005]; int subdp[100005]; inline int recalculateAnswer(const int& t){ for(int u : ord){ subdp[u] = isBusy[u] ? -10000000 : 0; for(int v : rg[u]){ subdp[u] = max(subdp[u], subdp[v]+1); } if(u == t) return subdp[t] < 0 ? -1 : subdp[t]; } } int main(){ int n, m, q; scanf("%d%d%d",&n,&m,&q); for(int i = 0; i < m; i++){ int s,e; scanf("%d%d",&s,&e); g[s].push_back(e); rg[e].push_back(s); } for(int i = 1; i <= n; i++) dfs(i); reverse(ord.begin(), ord.end()); for(int u : ord){ for(int v : rg[u]){ merge(dp[u], dp[v]); } merge(dp[u], {make_pair(-1, u)}); } int t, y; vector<int> busy; for(int qq = 0; qq < q; qq++){ scanf("%d%d",&t,&y); busy.reserve(y); for(int i = 0; i < y; i++){ int c; scanf("%d",&c); busy.push_back(c); isBusy[c] = true; } int ans = -1; if(y < THRESH){ for(auto p : dp[t]){ if(isBusy[p.second]) continue; ans = p.first; break; } }else{ ans = recalculateAnswer(t); } for(int c : busy) isBusy[c] = false; busy.clear(); printf("%d\n",ans); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 7424 KB | Output is correct |
2 | Correct | 5 ms | 7424 KB | Output is correct |
3 | Correct | 5 ms | 7424 KB | Output is correct |
4 | Correct | 5 ms | 7424 KB | Output is correct |
5 | Correct | 11 ms | 10624 KB | Output is correct |
6 | Correct | 10 ms | 10624 KB | Output is correct |
7 | Correct | 11 ms | 10656 KB | Output is correct |
8 | Correct | 18 ms | 10752 KB | Output is correct |
9 | Correct | 18 ms | 10752 KB | Output is correct |
10 | Correct | 18 ms | 10744 KB | Output is correct |
11 | Correct | 17 ms | 10624 KB | Output is correct |
12 | Correct | 12 ms | 10752 KB | Output is correct |
13 | Correct | 17 ms | 10624 KB | Output is correct |
14 | Correct | 16 ms | 10624 KB | Output is correct |
15 | Correct | 14 ms | 10624 KB | Output is correct |
16 | Correct | 15 ms | 10676 KB | Output is correct |
17 | Correct | 15 ms | 10752 KB | Output is correct |
18 | Correct | 12 ms | 10624 KB | Output is correct |
19 | Correct | 15 ms | 10624 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 7424 KB | Output is correct |
2 | Correct | 5 ms | 7424 KB | Output is correct |
3 | Correct | 5 ms | 7424 KB | Output is correct |
4 | Correct | 5 ms | 7424 KB | Output is correct |
5 | Correct | 11 ms | 10624 KB | Output is correct |
6 | Correct | 10 ms | 10624 KB | Output is correct |
7 | Correct | 11 ms | 10656 KB | Output is correct |
8 | Correct | 18 ms | 10752 KB | Output is correct |
9 | Correct | 18 ms | 10752 KB | Output is correct |
10 | Correct | 18 ms | 10744 KB | Output is correct |
11 | Correct | 17 ms | 10624 KB | Output is correct |
12 | Correct | 12 ms | 10752 KB | Output is correct |
13 | Correct | 17 ms | 10624 KB | Output is correct |
14 | Correct | 16 ms | 10624 KB | Output is correct |
15 | Correct | 14 ms | 10624 KB | Output is correct |
16 | Correct | 15 ms | 10676 KB | Output is correct |
17 | Correct | 15 ms | 10752 KB | Output is correct |
18 | Correct | 12 ms | 10624 KB | Output is correct |
19 | Correct | 15 ms | 10624 KB | Output is correct |
20 | Correct | 966 ms | 14504 KB | Output is correct |
21 | Correct | 819 ms | 14644 KB | Output is correct |
22 | Correct | 949 ms | 14564 KB | Output is correct |
23 | Correct | 1006 ms | 14704 KB | Output is correct |
24 | Correct | 1280 ms | 331284 KB | Output is correct |
25 | Correct | 1359 ms | 331200 KB | Output is correct |
26 | Correct | 1328 ms | 331120 KB | Output is correct |
27 | Correct | 1513 ms | 337012 KB | Output is correct |
28 | Correct | 1517 ms | 337076 KB | Output is correct |
29 | Correct | 1511 ms | 337136 KB | Output is correct |
30 | Correct | 1548 ms | 331576 KB | Output is correct |
31 | Correct | 1555 ms | 331796 KB | Output is correct |
32 | Correct | 1522 ms | 331760 KB | Output is correct |
33 | Correct | 1188 ms | 332912 KB | Output is correct |
34 | Correct | 1116 ms | 332212 KB | Output is correct |
35 | Correct | 1189 ms | 332284 KB | Output is correct |
36 | Correct | 1370 ms | 332396 KB | Output is correct |
37 | Correct | 1337 ms | 331764 KB | Output is correct |
38 | Correct | 1409 ms | 332540 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 7424 KB | Output is correct |
2 | Correct | 5 ms | 7424 KB | Output is correct |
3 | Correct | 5 ms | 7424 KB | Output is correct |
4 | Correct | 5 ms | 7424 KB | Output is correct |
5 | Correct | 11 ms | 10624 KB | Output is correct |
6 | Correct | 10 ms | 10624 KB | Output is correct |
7 | Correct | 11 ms | 10656 KB | Output is correct |
8 | Correct | 18 ms | 10752 KB | Output is correct |
9 | Correct | 18 ms | 10752 KB | Output is correct |
10 | Correct | 18 ms | 10744 KB | Output is correct |
11 | Correct | 17 ms | 10624 KB | Output is correct |
12 | Correct | 12 ms | 10752 KB | Output is correct |
13 | Correct | 17 ms | 10624 KB | Output is correct |
14 | Correct | 16 ms | 10624 KB | Output is correct |
15 | Correct | 14 ms | 10624 KB | Output is correct |
16 | Correct | 15 ms | 10676 KB | Output is correct |
17 | Correct | 15 ms | 10752 KB | Output is correct |
18 | Correct | 12 ms | 10624 KB | Output is correct |
19 | Correct | 15 ms | 10624 KB | Output is correct |
20 | Correct | 966 ms | 14504 KB | Output is correct |
21 | Correct | 819 ms | 14644 KB | Output is correct |
22 | Correct | 949 ms | 14564 KB | Output is correct |
23 | Correct | 1006 ms | 14704 KB | Output is correct |
24 | Correct | 1280 ms | 331284 KB | Output is correct |
25 | Correct | 1359 ms | 331200 KB | Output is correct |
26 | Correct | 1328 ms | 331120 KB | Output is correct |
27 | Correct | 1513 ms | 337012 KB | Output is correct |
28 | Correct | 1517 ms | 337076 KB | Output is correct |
29 | Correct | 1511 ms | 337136 KB | Output is correct |
30 | Correct | 1548 ms | 331576 KB | Output is correct |
31 | Correct | 1555 ms | 331796 KB | Output is correct |
32 | Correct | 1522 ms | 331760 KB | Output is correct |
33 | Correct | 1188 ms | 332912 KB | Output is correct |
34 | Correct | 1116 ms | 332212 KB | Output is correct |
35 | Correct | 1189 ms | 332284 KB | Output is correct |
36 | Correct | 1370 ms | 332396 KB | Output is correct |
37 | Correct | 1337 ms | 331764 KB | Output is correct |
38 | Correct | 1409 ms | 332540 KB | Output is correct |
39 | Correct | 1357 ms | 330524 KB | Output is correct |
40 | Correct | 1328 ms | 330272 KB | Output is correct |
41 | Correct | 1293 ms | 329968 KB | Output is correct |
42 | Correct | 1525 ms | 330608 KB | Output is correct |
43 | Correct | 1331 ms | 330336 KB | Output is correct |
44 | Correct | 1022 ms | 15372 KB | Output is correct |
45 | Correct | 993 ms | 14204 KB | Output is correct |
46 | Correct | 960 ms | 14200 KB | Output is correct |
47 | Correct | 979 ms | 14108 KB | Output is correct |
48 | Correct | 957 ms | 14072 KB | Output is correct |
49 | Correct | 1583 ms | 336440 KB | Output is correct |
50 | Correct | 1534 ms | 335728 KB | Output is correct |
51 | Correct | 880 ms | 15232 KB | Output is correct |
52 | Correct | 859 ms | 14856 KB | Output is correct |
53 | Correct | 1460 ms | 332068 KB | Output is correct |
54 | Correct | 1430 ms | 330832 KB | Output is correct |
55 | Correct | 1397 ms | 331256 KB | Output is correct |
56 | Correct | 1332 ms | 330484 KB | Output is correct |
57 | Correct | 1014 ms | 15192 KB | Output is correct |
58 | Correct | 1060 ms | 15092 KB | Output is correct |
59 | Correct | 954 ms | 14808 KB | Output is correct |
60 | Correct | 1030 ms | 14588 KB | Output is correct |
61 | Correct | 1635 ms | 336192 KB | Output is correct |
62 | Correct | 1597 ms | 331888 KB | Output is correct |
63 | Correct | 1499 ms | 330632 KB | Output is correct |
64 | Correct | 1542 ms | 335472 KB | Output is correct |
65 | Correct | 1414 ms | 330992 KB | Output is correct |
66 | Correct | 1357 ms | 330964 KB | Output is correct |
67 | Correct | 1509 ms | 336624 KB | Output is correct |
68 | Correct | 1395 ms | 332272 KB | Output is correct |
69 | Correct | 1320 ms | 331464 KB | Output is correct |
70 | Correct | 1534 ms | 337264 KB | Output is correct |
71 | Correct | 1405 ms | 333104 KB | Output is correct |
72 | Correct | 1360 ms | 332120 KB | Output is correct |
73 | Correct | 1604 ms | 337360 KB | Output is correct |
74 | Correct | 1463 ms | 333068 KB | Output is correct |
75 | Correct | 1420 ms | 332068 KB | Output is correct |
76 | Correct | 1591 ms | 338284 KB | Output is correct |
77 | Correct | 1518 ms | 337016 KB | Output is correct |
78 | Correct | 1554 ms | 337336 KB | Output is correct |
79 | Correct | 924 ms | 15992 KB | Output is correct |
80 | Correct | 857 ms | 14984 KB | Output is correct |
81 | Correct | 861 ms | 14584 KB | Output is correct |
82 | Correct | 1619 ms | 332776 KB | Output is correct |
83 | Correct | 1677 ms | 332584 KB | Output is correct |
84 | Correct | 1545 ms | 331628 KB | Output is correct |
85 | Correct | 1538 ms | 331780 KB | Output is correct |
86 | Correct | 1553 ms | 332272 KB | Output is correct |
87 | Correct | 1580 ms | 332148 KB | Output is correct |
88 | Correct | 1073 ms | 15836 KB | Output is correct |
89 | Correct | 1056 ms | 15960 KB | Output is correct |
90 | Correct | 962 ms | 14880 KB | Output is correct |
91 | Correct | 1031 ms | 15168 KB | Output is correct |
92 | Correct | 1004 ms | 14748 KB | Output is correct |
93 | Correct | 953 ms | 14712 KB | Output is correct |
94 | Correct | 1278 ms | 333772 KB | Output is correct |
95 | Correct | 1188 ms | 332812 KB | Output is correct |
96 | Correct | 1228 ms | 332656 KB | Output is correct |
97 | Correct | 1187 ms | 331764 KB | Output is correct |
98 | Correct | 1229 ms | 333256 KB | Output is correct |
99 | Correct | 1150 ms | 332176 KB | Output is correct |
100 | Correct | 1086 ms | 16120 KB | Output is correct |
101 | Correct | 1043 ms | 16192 KB | Output is correct |
102 | Correct | 1025 ms | 15100 KB | Output is correct |
103 | Correct | 1035 ms | 14924 KB | Output is correct |
104 | Correct | 1039 ms | 14856 KB | Output is correct |
105 | Correct | 1022 ms | 14588 KB | Output is correct |
106 | Correct | 1470 ms | 333808 KB | Output is correct |
107 | Correct | 1405 ms | 333172 KB | Output is correct |
108 | Correct | 1410 ms | 332792 KB | Output is correct |
109 | Correct | 1332 ms | 331768 KB | Output is correct |
110 | Correct | 1402 ms | 333424 KB | Output is correct |
111 | Correct | 1342 ms | 332352 KB | Output is correct |
112 | Correct | 1002 ms | 15940 KB | Output is correct |
113 | Correct | 1067 ms | 15932 KB | Output is correct |
114 | Correct | 956 ms | 14956 KB | Output is correct |
115 | Correct | 994 ms | 14920 KB | Output is correct |
116 | Correct | 958 ms | 14724 KB | Output is correct |
117 | Correct | 967 ms | 14456 KB | Output is correct |
118 | Correct | 1517 ms | 336700 KB | Output is correct |
119 | Correct | 1396 ms | 332452 KB | Output is correct |
120 | Correct | 1351 ms | 331460 KB | Output is correct |
121 | Correct | 1542 ms | 336624 KB | Output is correct |
122 | Correct | 1421 ms | 332484 KB | Output is correct |
123 | Correct | 1356 ms | 331504 KB | Output is correct |
124 | Correct | 1519 ms | 336532 KB | Output is correct |
125 | Correct | 1381 ms | 332276 KB | Output is correct |
126 | Correct | 1334 ms | 331340 KB | Output is correct |