Submission #952209

# Submission time Handle Problem Language Result Execution time Memory
952209 2024-03-23T09:43:23 Z BhavayGoyal Bitaro’s Party (JOI18_bitaro) C++14
100 / 100
1332 ms 115080 KB
#include <bits/stdc++.h>
using namespace std;
 
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
 
template<class T> using oset = 
            tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
 
#define ll long long
#define ld long double
#define ar array
#define vi vector<int>
#define vii vector<vector<int>>
#define pii pair<int, int>
#define pb push_back
#define all(x) x.begin(), x.end()
#define f first
#define s second
#define endl "\n"
 
const int MOD = 1e9+7;
const int inf = 1e9;
const ll linf = 1e18;
 
const int d4i[4]={-1, 0, 1, 0}, d4j[4]={0, 1, 0, -1};
const int d8i[8]={-1, -1, 0, 1, 1, 1, 0, -1}, d8j[8]={0, 1, 1, 1, 0, -1, -1, -1};
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
 
// -------------------------------------------------- Main Code --------------------------------------------------
 
const int N = 1e5+5, SQRT = 100;
vi g[N];
vector<pair<int, int>> dp[N];
int blocked[N];
 
void sol() {
    int n, m, q; cin >> n >> m >> q;
 
    for (int i = 1; i <= m; i++) {
        int a, b; cin >> a >> b;
        g[b].pb(a);
    }
 
    dp[1].pb({0, 1});
    vi vis(n+1, 0);
    for (int i = 2; i <= n; i++) {
        vector<pii> temp;
        temp.pb({0, i});
        for (auto ch : g[i]) {
            for (auto x : dp[ch]) {
                x.f++; temp.pb(x);
            }
        }
        sort(all(temp)); reverse(all(temp));
        // removing the duplicates
        for (auto &j : temp) {
            if (vis[j.s]) continue;
            vis[j.s] = true;
            dp[i].pb(j);
            if (dp[i].size() == SQRT) break;
        }
        for (auto &j : dp[i]) vis[j.s] = false;
    }
 
    while (q--) {
        int city, y; cin >> city >> y;
        vi cities;
        for (int i = 0; i < y; i++) {int x; cin >> x; cities.pb(x); blocked[x] = 1;}
        if (y >= SQRT) {
            vi dpp(n+1);
            for (int i = 1; i <= city; i++) {
                dpp[i] = (blocked[i]?-inf:0);
                for (auto ch : g[i]) {
                    dpp[i] = max(dpp[i], 1+dpp[ch]);
                }
            }
            cout << (dpp[city]<0?-1:dpp[city]) << endl;
        }
        else {
            int ans = -1;
            for (auto &i : dp[city]) {
                if (!blocked[i.s]) {ans = i.f; break;}
            }
            if (!blocked[city]) cout << max(ans, 0) << endl;
            else cout << ans << endl;
        }
        // reset blocked array
        for (auto &i : cities) blocked[i] = 0;
    }
}
 
int main () {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
 
    int t = 1;
    // cin >> t; 
    while (t--) {
        sol();
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5212 KB Output is correct
2 Correct 2 ms 5140 KB Output is correct
3 Correct 1 ms 5212 KB Output is correct
4 Correct 2 ms 5212 KB Output is correct
5 Correct 4 ms 5724 KB Output is correct
6 Correct 4 ms 5720 KB Output is correct
7 Correct 7 ms 5720 KB Output is correct
8 Correct 9 ms 6488 KB Output is correct
9 Correct 7 ms 6232 KB Output is correct
10 Correct 7 ms 6236 KB Output is correct
11 Correct 8 ms 6244 KB Output is correct
12 Correct 6 ms 6004 KB Output is correct
13 Correct 8 ms 6236 KB Output is correct
14 Correct 7 ms 5820 KB Output is correct
15 Correct 5 ms 5724 KB Output is correct
16 Correct 7 ms 5908 KB Output is correct
17 Correct 7 ms 5980 KB Output is correct
18 Correct 6 ms 5980 KB Output is correct
19 Correct 7 ms 5980 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5212 KB Output is correct
2 Correct 2 ms 5140 KB Output is correct
3 Correct 1 ms 5212 KB Output is correct
4 Correct 2 ms 5212 KB Output is correct
5 Correct 4 ms 5724 KB Output is correct
6 Correct 4 ms 5720 KB Output is correct
7 Correct 7 ms 5720 KB Output is correct
8 Correct 9 ms 6488 KB Output is correct
9 Correct 7 ms 6232 KB Output is correct
10 Correct 7 ms 6236 KB Output is correct
11 Correct 8 ms 6244 KB Output is correct
12 Correct 6 ms 6004 KB Output is correct
13 Correct 8 ms 6236 KB Output is correct
14 Correct 7 ms 5820 KB Output is correct
15 Correct 5 ms 5724 KB Output is correct
16 Correct 7 ms 5908 KB Output is correct
17 Correct 7 ms 5980 KB Output is correct
18 Correct 6 ms 5980 KB Output is correct
19 Correct 7 ms 5980 KB Output is correct
20 Correct 1272 ms 8028 KB Output is correct
21 Correct 1238 ms 8000 KB Output is correct
22 Correct 1283 ms 8008 KB Output is correct
23 Correct 1214 ms 8892 KB Output is correct
24 Correct 718 ms 86836 KB Output is correct
25 Correct 737 ms 88272 KB Output is correct
26 Correct 741 ms 88380 KB Output is correct
27 Correct 565 ms 111424 KB Output is correct
28 Correct 584 ms 111432 KB Output is correct
29 Correct 567 ms 111564 KB Output is correct
30 Correct 620 ms 111668 KB Output is correct
31 Correct 686 ms 109372 KB Output is correct
32 Correct 613 ms 111312 KB Output is correct
33 Correct 559 ms 73580 KB Output is correct
34 Correct 557 ms 66724 KB Output is correct
35 Correct 541 ms 72740 KB Output is correct
36 Correct 640 ms 92092 KB Output is correct
37 Correct 699 ms 87820 KB Output is correct
38 Correct 658 ms 92472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5212 KB Output is correct
2 Correct 2 ms 5140 KB Output is correct
3 Correct 1 ms 5212 KB Output is correct
4 Correct 2 ms 5212 KB Output is correct
5 Correct 4 ms 5724 KB Output is correct
6 Correct 4 ms 5720 KB Output is correct
7 Correct 7 ms 5720 KB Output is correct
8 Correct 9 ms 6488 KB Output is correct
9 Correct 7 ms 6232 KB Output is correct
10 Correct 7 ms 6236 KB Output is correct
11 Correct 8 ms 6244 KB Output is correct
12 Correct 6 ms 6004 KB Output is correct
13 Correct 8 ms 6236 KB Output is correct
14 Correct 7 ms 5820 KB Output is correct
15 Correct 5 ms 5724 KB Output is correct
16 Correct 7 ms 5908 KB Output is correct
17 Correct 7 ms 5980 KB Output is correct
18 Correct 6 ms 5980 KB Output is correct
19 Correct 7 ms 5980 KB Output is correct
20 Correct 1272 ms 8028 KB Output is correct
21 Correct 1238 ms 8000 KB Output is correct
22 Correct 1283 ms 8008 KB Output is correct
23 Correct 1214 ms 8892 KB Output is correct
24 Correct 718 ms 86836 KB Output is correct
25 Correct 737 ms 88272 KB Output is correct
26 Correct 741 ms 88380 KB Output is correct
27 Correct 565 ms 111424 KB Output is correct
28 Correct 584 ms 111432 KB Output is correct
29 Correct 567 ms 111564 KB Output is correct
30 Correct 620 ms 111668 KB Output is correct
31 Correct 686 ms 109372 KB Output is correct
32 Correct 613 ms 111312 KB Output is correct
33 Correct 559 ms 73580 KB Output is correct
34 Correct 557 ms 66724 KB Output is correct
35 Correct 541 ms 72740 KB Output is correct
36 Correct 640 ms 92092 KB Output is correct
37 Correct 699 ms 87820 KB Output is correct
38 Correct 658 ms 92472 KB Output is correct
39 Correct 759 ms 86908 KB Output is correct
40 Correct 746 ms 87120 KB Output is correct
41 Correct 960 ms 87916 KB Output is correct
42 Correct 787 ms 87584 KB Output is correct
43 Correct 717 ms 87280 KB Output is correct
44 Correct 1292 ms 8224 KB Output is correct
45 Correct 1284 ms 9944 KB Output is correct
46 Correct 1330 ms 9896 KB Output is correct
47 Correct 1291 ms 9944 KB Output is correct
48 Correct 1268 ms 9504 KB Output is correct
49 Correct 614 ms 114472 KB Output is correct
50 Correct 785 ms 113612 KB Output is correct
51 Correct 1272 ms 10292 KB Output is correct
52 Correct 1315 ms 9632 KB Output is correct
53 Correct 684 ms 94740 KB Output is correct
54 Correct 716 ms 90264 KB Output is correct
55 Correct 885 ms 93896 KB Output is correct
56 Correct 931 ms 90108 KB Output is correct
57 Correct 1304 ms 10508 KB Output is correct
58 Correct 1301 ms 10380 KB Output is correct
59 Correct 1321 ms 9596 KB Output is correct
60 Correct 1332 ms 10072 KB Output is correct
61 Correct 604 ms 113660 KB Output is correct
62 Correct 687 ms 94596 KB Output is correct
63 Correct 720 ms 89648 KB Output is correct
64 Correct 686 ms 113536 KB Output is correct
65 Correct 799 ms 94204 KB Output is correct
66 Correct 833 ms 90180 KB Output is correct
67 Correct 800 ms 113724 KB Output is correct
68 Correct 897 ms 94664 KB Output is correct
69 Correct 921 ms 89036 KB Output is correct
70 Correct 565 ms 113824 KB Output is correct
71 Correct 647 ms 94668 KB Output is correct
72 Correct 698 ms 89952 KB Output is correct
73 Correct 596 ms 113996 KB Output is correct
74 Correct 674 ms 94680 KB Output is correct
75 Correct 691 ms 89696 KB Output is correct
76 Correct 604 ms 115080 KB Output is correct
77 Correct 785 ms 114044 KB Output is correct
78 Correct 577 ms 114168 KB Output is correct
79 Correct 1280 ms 10408 KB Output is correct
80 Correct 1286 ms 9804 KB Output is correct
81 Correct 1240 ms 9904 KB Output is correct
82 Correct 646 ms 114916 KB Output is correct
83 Correct 762 ms 112928 KB Output is correct
84 Correct 825 ms 114080 KB Output is correct
85 Correct 929 ms 111872 KB Output is correct
86 Correct 613 ms 114540 KB Output is correct
87 Correct 723 ms 112340 KB Output is correct
88 Correct 1298 ms 10660 KB Output is correct
89 Correct 1298 ms 10476 KB Output is correct
90 Correct 1325 ms 9616 KB Output is correct
91 Correct 1330 ms 9632 KB Output is correct
92 Correct 1271 ms 9724 KB Output is correct
93 Correct 1284 ms 9564 KB Output is correct
94 Correct 589 ms 76748 KB Output is correct
95 Correct 591 ms 69716 KB Output is correct
96 Correct 758 ms 75724 KB Output is correct
97 Correct 761 ms 69584 KB Output is correct
98 Correct 567 ms 76216 KB Output is correct
99 Correct 581 ms 69360 KB Output is correct
100 Correct 1276 ms 10500 KB Output is correct
101 Correct 1241 ms 10780 KB Output is correct
102 Correct 1274 ms 10436 KB Output is correct
103 Correct 1259 ms 10740 KB Output is correct
104 Correct 1263 ms 10140 KB Output is correct
105 Correct 1226 ms 10564 KB Output is correct
106 Correct 693 ms 95312 KB Output is correct
107 Correct 724 ms 90940 KB Output is correct
108 Correct 913 ms 94916 KB Output is correct
109 Correct 919 ms 89832 KB Output is correct
110 Correct 656 ms 95180 KB Output is correct
111 Correct 710 ms 90508 KB Output is correct
112 Correct 1297 ms 10580 KB Output is correct
113 Correct 1313 ms 10368 KB Output is correct
114 Correct 1311 ms 9780 KB Output is correct
115 Correct 1329 ms 9912 KB Output is correct
116 Correct 1260 ms 9656 KB Output is correct
117 Correct 1277 ms 9780 KB Output is correct
118 Correct 599 ms 113320 KB Output is correct
119 Correct 637 ms 94028 KB Output is correct
120 Correct 698 ms 89488 KB Output is correct
121 Correct 572 ms 113396 KB Output is correct
122 Correct 657 ms 93996 KB Output is correct
123 Correct 682 ms 89544 KB Output is correct
124 Correct 560 ms 113232 KB Output is correct
125 Correct 679 ms 94200 KB Output is correct
126 Correct 695 ms 89612 KB Output is correct