#include <bits/stdc++.h>
using namespace std;
#ifdef evenvalue
#include "debug.h"
#else
#define debug(...)
#endif
using int64 = long long;
using ld = long double;
template<typename T>
using min_heap = priority_queue<T, vector<T>, greater<T>>;
template<typename T>
using max_heap = priority_queue<T, vector<T>, less<T>>;
namespace Read {
int Int() {
int x;
cin >> x;
return x;
}
int64 Int64() {
int64 x;
cin >> x;
return x;
}
char Char() {
char c;
cin >> c;
return c;
}
string String() {
string s;
cin >> s;
return s;
}
double Double() {
return stod(String());
}
ld LongDouble() {
return stold(String());
}
template<typename T1, typename T2>
pair<T1, T2> Pair() {
pair<T1, T2> p;
cin >> p.first >> p.second;
return p;
}
template<typename T>
vector<T> Vec(const int n) {
vector<T> v(n);
for (T &x : v) {
cin >> x;
}
return v;
}
template<typename T>
vector<vector<T>> VecVec(const int n, const int m) {
vector<vector<T>> v(n);
for (vector<T> &vec : v) {
vec = Vec<T>(m);
}
return v;
}
}//namespace Read
constexpr int kInf = 1e9 + 10;
constexpr int64 kInf64 = 1e15 + 10;
constexpr int kMod = 1e9 + 7;
constexpr int kMaxN = 2e5 + 10;
constexpr int kSqrtN = 150;
inline void solution() {
const int n = Read::Int();
const int m = Read::Int();
const int q = Read::Int();
vector<basic_string<int>> in(n);
for (int i = 0; i < m; i++) {
const int x = Read::Int() - 1;
const int y = Read::Int() - 1;
in[y].push_back(x);
}
vector<bool> busy(n);
vector<vector<pair<int, int>>> best_paths(n);
for (int x = 0; x < n; x++) {
vector<pair<int, int>> best;
if (not busy[x]) best.emplace_back(-1, x);
for (const int y : in[x]) {
best.insert(best.end(), best_paths[y].begin(), best_paths[y].end());
}
sort(best.rbegin(), best.rend());
for (const auto [dist, y] : best) {
if (busy[y]) continue;
busy[y] = true;
best_paths[x].emplace_back(dist + 1, y);
if (best_paths[x].size() == kSqrtN) break;
}
for (const auto [dist, y] : best_paths[x]) {
busy[y] = false;
}
}
vector<int> dp(n);
for (int qry = 0; qry < q; qry++) {
const int x = Read::Int() - 1;
const vector<int> nerds = Read::Vec<int>(Read::Int());
for (const int nerd : nerds) {
busy[nerd - 1] = true;
}
if (nerds.size() >= kSqrtN) {
fill(dp.begin(), dp.begin() + x + 1, 0);
for (const int nerd : nerds) {
dp[nerd - 1] = -kInf;
}
for (int y = 0; y <= x; y++) {
for (const int z : in[y]) {
dp[y] = max(dp[y], dp[z] + 1);
}
}
cout << max(dp[x], -1) << '\n';
} else {
bool found = false;
for (const auto [dist, y] : best_paths[x]) {
if (busy[y]) continue;
found = true;
cout << dist << '\n';
break;
}
if (not found) cout << -1 << '\n';
}
for (const int nerd : nerds) {
busy[nerd - 1] = false;
}
}
}
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
cout << fixed << setprecision(10);
int testcases = 1;
//cin >> testcases;
while (testcases--) {
solution();
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
3 ms |
860 KB |
Output is correct |
6 |
Correct |
4 ms |
860 KB |
Output is correct |
7 |
Correct |
3 ms |
860 KB |
Output is correct |
8 |
Correct |
11 ms |
2396 KB |
Output is correct |
9 |
Correct |
11 ms |
2396 KB |
Output is correct |
10 |
Correct |
11 ms |
2396 KB |
Output is correct |
11 |
Correct |
12 ms |
2136 KB |
Output is correct |
12 |
Correct |
7 ms |
1628 KB |
Output is correct |
13 |
Correct |
12 ms |
2140 KB |
Output is correct |
14 |
Correct |
9 ms |
1628 KB |
Output is correct |
15 |
Correct |
5 ms |
1112 KB |
Output is correct |
16 |
Correct |
9 ms |
1628 KB |
Output is correct |
17 |
Correct |
9 ms |
1900 KB |
Output is correct |
18 |
Correct |
7 ms |
1368 KB |
Output is correct |
19 |
Correct |
10 ms |
1904 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
3 ms |
860 KB |
Output is correct |
6 |
Correct |
4 ms |
860 KB |
Output is correct |
7 |
Correct |
3 ms |
860 KB |
Output is correct |
8 |
Correct |
11 ms |
2396 KB |
Output is correct |
9 |
Correct |
11 ms |
2396 KB |
Output is correct |
10 |
Correct |
11 ms |
2396 KB |
Output is correct |
11 |
Correct |
12 ms |
2136 KB |
Output is correct |
12 |
Correct |
7 ms |
1628 KB |
Output is correct |
13 |
Correct |
12 ms |
2140 KB |
Output is correct |
14 |
Correct |
9 ms |
1628 KB |
Output is correct |
15 |
Correct |
5 ms |
1112 KB |
Output is correct |
16 |
Correct |
9 ms |
1628 KB |
Output is correct |
17 |
Correct |
9 ms |
1900 KB |
Output is correct |
18 |
Correct |
7 ms |
1368 KB |
Output is correct |
19 |
Correct |
10 ms |
1904 KB |
Output is correct |
20 |
Correct |
1582 ms |
6140 KB |
Output is correct |
21 |
Correct |
1536 ms |
6040 KB |
Output is correct |
22 |
Correct |
1562 ms |
6020 KB |
Output is correct |
23 |
Correct |
1517 ms |
7504 KB |
Output is correct |
24 |
Correct |
1098 ms |
156092 KB |
Output is correct |
25 |
Correct |
1145 ms |
161036 KB |
Output is correct |
26 |
Correct |
1161 ms |
160872 KB |
Output is correct |
27 |
Correct |
1103 ms |
218972 KB |
Output is correct |
28 |
Correct |
1099 ms |
219000 KB |
Output is correct |
29 |
Correct |
1094 ms |
218960 KB |
Output is correct |
30 |
Correct |
1273 ms |
218668 KB |
Output is correct |
31 |
Correct |
1510 ms |
213232 KB |
Output is correct |
32 |
Correct |
1262 ms |
219064 KB |
Output is correct |
33 |
Correct |
1004 ms |
136480 KB |
Output is correct |
34 |
Correct |
899 ms |
117372 KB |
Output is correct |
35 |
Correct |
965 ms |
135584 KB |
Output is correct |
36 |
Correct |
1220 ms |
178468 KB |
Output is correct |
37 |
Correct |
1215 ms |
165612 KB |
Output is correct |
38 |
Correct |
1216 ms |
179108 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
3 ms |
860 KB |
Output is correct |
6 |
Correct |
4 ms |
860 KB |
Output is correct |
7 |
Correct |
3 ms |
860 KB |
Output is correct |
8 |
Correct |
11 ms |
2396 KB |
Output is correct |
9 |
Correct |
11 ms |
2396 KB |
Output is correct |
10 |
Correct |
11 ms |
2396 KB |
Output is correct |
11 |
Correct |
12 ms |
2136 KB |
Output is correct |
12 |
Correct |
7 ms |
1628 KB |
Output is correct |
13 |
Correct |
12 ms |
2140 KB |
Output is correct |
14 |
Correct |
9 ms |
1628 KB |
Output is correct |
15 |
Correct |
5 ms |
1112 KB |
Output is correct |
16 |
Correct |
9 ms |
1628 KB |
Output is correct |
17 |
Correct |
9 ms |
1900 KB |
Output is correct |
18 |
Correct |
7 ms |
1368 KB |
Output is correct |
19 |
Correct |
10 ms |
1904 KB |
Output is correct |
20 |
Correct |
1582 ms |
6140 KB |
Output is correct |
21 |
Correct |
1536 ms |
6040 KB |
Output is correct |
22 |
Correct |
1562 ms |
6020 KB |
Output is correct |
23 |
Correct |
1517 ms |
7504 KB |
Output is correct |
24 |
Correct |
1098 ms |
156092 KB |
Output is correct |
25 |
Correct |
1145 ms |
161036 KB |
Output is correct |
26 |
Correct |
1161 ms |
160872 KB |
Output is correct |
27 |
Correct |
1103 ms |
218972 KB |
Output is correct |
28 |
Correct |
1099 ms |
219000 KB |
Output is correct |
29 |
Correct |
1094 ms |
218960 KB |
Output is correct |
30 |
Correct |
1273 ms |
218668 KB |
Output is correct |
31 |
Correct |
1510 ms |
213232 KB |
Output is correct |
32 |
Correct |
1262 ms |
219064 KB |
Output is correct |
33 |
Correct |
1004 ms |
136480 KB |
Output is correct |
34 |
Correct |
899 ms |
117372 KB |
Output is correct |
35 |
Correct |
965 ms |
135584 KB |
Output is correct |
36 |
Correct |
1220 ms |
178468 KB |
Output is correct |
37 |
Correct |
1215 ms |
165612 KB |
Output is correct |
38 |
Correct |
1216 ms |
179108 KB |
Output is correct |
39 |
Correct |
1137 ms |
157780 KB |
Output is correct |
40 |
Correct |
1143 ms |
158716 KB |
Output is correct |
41 |
Correct |
1124 ms |
159228 KB |
Output is correct |
42 |
Correct |
1160 ms |
159084 KB |
Output is correct |
43 |
Correct |
1103 ms |
158036 KB |
Output is correct |
44 |
Correct |
1587 ms |
6708 KB |
Output is correct |
45 |
Correct |
1571 ms |
5720 KB |
Output is correct |
46 |
Correct |
1575 ms |
6260 KB |
Output is correct |
47 |
Correct |
1585 ms |
5812 KB |
Output is correct |
48 |
Correct |
1570 ms |
5772 KB |
Output is correct |
49 |
Correct |
1142 ms |
219132 KB |
Output is correct |
50 |
Correct |
1088 ms |
218196 KB |
Output is correct |
51 |
Correct |
1548 ms |
6192 KB |
Output is correct |
52 |
Correct |
1536 ms |
6244 KB |
Output is correct |
53 |
Correct |
1243 ms |
178000 KB |
Output is correct |
54 |
Correct |
1248 ms |
165516 KB |
Output is correct |
55 |
Correct |
1213 ms |
177676 KB |
Output is correct |
56 |
Correct |
1241 ms |
165984 KB |
Output is correct |
57 |
Correct |
1587 ms |
6316 KB |
Output is correct |
58 |
Correct |
1589 ms |
6360 KB |
Output is correct |
59 |
Correct |
1562 ms |
5848 KB |
Output is correct |
60 |
Correct |
1570 ms |
6336 KB |
Output is correct |
61 |
Correct |
1157 ms |
218604 KB |
Output is correct |
62 |
Correct |
1275 ms |
178324 KB |
Output is correct |
63 |
Correct |
1238 ms |
164704 KB |
Output is correct |
64 |
Correct |
1238 ms |
218180 KB |
Output is correct |
65 |
Correct |
1349 ms |
177748 KB |
Output is correct |
66 |
Correct |
1370 ms |
166252 KB |
Output is correct |
67 |
Correct |
1311 ms |
218236 KB |
Output is correct |
68 |
Correct |
1449 ms |
178400 KB |
Output is correct |
69 |
Correct |
1424 ms |
163472 KB |
Output is correct |
70 |
Correct |
1096 ms |
218536 KB |
Output is correct |
71 |
Correct |
1222 ms |
178060 KB |
Output is correct |
72 |
Correct |
1244 ms |
164892 KB |
Output is correct |
73 |
Correct |
1111 ms |
218668 KB |
Output is correct |
74 |
Correct |
1247 ms |
178052 KB |
Output is correct |
75 |
Correct |
1203 ms |
164724 KB |
Output is correct |
76 |
Correct |
1135 ms |
219376 KB |
Output is correct |
77 |
Correct |
1201 ms |
218804 KB |
Output is correct |
78 |
Correct |
1139 ms |
218684 KB |
Output is correct |
79 |
Correct |
1551 ms |
6516 KB |
Output is correct |
80 |
Correct |
1573 ms |
5996 KB |
Output is correct |
81 |
Correct |
1555 ms |
5804 KB |
Output is correct |
82 |
Correct |
1306 ms |
219128 KB |
Output is correct |
83 |
Correct |
1634 ms |
213936 KB |
Output is correct |
84 |
Correct |
1374 ms |
219040 KB |
Output is correct |
85 |
Correct |
1682 ms |
212756 KB |
Output is correct |
86 |
Correct |
1267 ms |
218552 KB |
Output is correct |
87 |
Correct |
1590 ms |
213508 KB |
Output is correct |
88 |
Correct |
1591 ms |
6208 KB |
Output is correct |
89 |
Correct |
1587 ms |
6456 KB |
Output is correct |
90 |
Correct |
1591 ms |
6008 KB |
Output is correct |
91 |
Correct |
1588 ms |
5840 KB |
Output is correct |
92 |
Correct |
1566 ms |
5800 KB |
Output is correct |
93 |
Correct |
1563 ms |
5748 KB |
Output is correct |
94 |
Correct |
1012 ms |
137136 KB |
Output is correct |
95 |
Correct |
917 ms |
117016 KB |
Output is correct |
96 |
Correct |
1069 ms |
135604 KB |
Output is correct |
97 |
Correct |
1016 ms |
118900 KB |
Output is correct |
98 |
Correct |
981 ms |
136252 KB |
Output is correct |
99 |
Correct |
910 ms |
118404 KB |
Output is correct |
100 |
Correct |
1565 ms |
7360 KB |
Output is correct |
101 |
Correct |
1515 ms |
7188 KB |
Output is correct |
102 |
Correct |
1582 ms |
6920 KB |
Output is correct |
103 |
Correct |
1549 ms |
6836 KB |
Output is correct |
104 |
Correct |
1570 ms |
6592 KB |
Output is correct |
105 |
Correct |
1525 ms |
6536 KB |
Output is correct |
106 |
Correct |
1248 ms |
178272 KB |
Output is correct |
107 |
Correct |
1244 ms |
166404 KB |
Output is correct |
108 |
Correct |
1333 ms |
178904 KB |
Output is correct |
109 |
Correct |
1289 ms |
165456 KB |
Output is correct |
110 |
Correct |
1239 ms |
178868 KB |
Output is correct |
111 |
Correct |
1228 ms |
165964 KB |
Output is correct |
112 |
Correct |
1573 ms |
6336 KB |
Output is correct |
113 |
Correct |
1611 ms |
6908 KB |
Output is correct |
114 |
Correct |
1582 ms |
6208 KB |
Output is correct |
115 |
Correct |
1591 ms |
6588 KB |
Output is correct |
116 |
Correct |
1572 ms |
5864 KB |
Output is correct |
117 |
Correct |
1564 ms |
6600 KB |
Output is correct |
118 |
Correct |
1114 ms |
217104 KB |
Output is correct |
119 |
Correct |
1231 ms |
177000 KB |
Output is correct |
120 |
Correct |
1204 ms |
163464 KB |
Output is correct |
121 |
Correct |
1105 ms |
216732 KB |
Output is correct |
122 |
Correct |
1223 ms |
176144 KB |
Output is correct |
123 |
Correct |
1199 ms |
163040 KB |
Output is correct |
124 |
Correct |
1096 ms |
217136 KB |
Output is correct |
125 |
Correct |
1241 ms |
177184 KB |
Output is correct |
126 |
Correct |
1205 ms |
163236 KB |
Output is correct |