Submission #715430

# Submission time Handle Problem Language Result Execution time Memory
715430 2023-03-26T16:50:42 Z SlavicG Bridges (APIO19_bridges) C++17
100 / 100
2283 ms 171976 KB
#include "bits/stdc++.h"
using namespace std;
 
#define ll long long

#define          all(v)              v.begin(), v.end()
#define         rall(v)              v.rbegin(),v.rend()
 
#define            pb                push_back
#define          sz(a)               (int)a.size()

const int N = 1e5 + 5, S = 1000;
int p[N], s[N], a[N], b[N], c[N], type[N], x[N], y[N], w[N], ans[N], used[N]; 
vector<int> consider[N];
stack<pair<int, int>> st;

int get(int a) {return p[a] == a ? a : get(p[a]);}
void uni(int a, int b) {
    a = get(a), b = get(b);
    if(a == b) return;
    if(s[a] > s[b]) swap(a, b);
    s[b] += s[a];
    p[a] = b;
    st.push({a, b});
}

void solve() {
    int n, m; cin >> n >> m;
    for(int i = 1; i <= m; ++i) {
        cin >> a[i] >> b[i] >> w[i];
    }
    int q; cin >> q;
    for(int i = 1; i <= q; ++i) {
        cin >> type[i] >> x[i] >> y[i];
    }
    for(int j = 1; j <= q; j += S) {
        int l = j, r = min(j + S - 1, q);
        for(int i = 0; i < N; ++i) {
            p[i] = i, s[i] = 1, used[i] = 0;
        }
        vector<int> active;
        for(int i = l; i <= r; ++i) {
            if(type[i] == 1) {
                used[x[i]] = 1, active.pb(x[i]);
            }
        }
        vector<int> edges;
        for(int i = 1; i <= m; ++i) {
            if(!used[i]) edges.pb(i);
        }
        vector<int> queries;
        for(int i = l; i <= r; ++i) {
            if(type[i] == 1) {
                w[x[i]] = y[i];
            } else {
                queries.pb(i);
                for(int k: active) {
                    if(w[k] >= y[i]) consider[i].pb(k);
                }
            }
        }
        sort(all(edges), [&](int i, int j){return w[i] < w[j];});
        sort(all(queries), [&](int i, int j){return y[i] > y[j];});
        for(int i: queries) {
            while(sz(edges) && w[edges.back()] >= y[i]) {
                uni(a[edges.back()], b[edges.back()]);
                edges.pop_back();
            }
            int remsz = sz(st);
            for(int j: consider[i]) {
                uni(a[j], b[j]);
            }
            ans[i] = s[get(x[i])];

            while(sz(st) > remsz) {
                int a = st.top().first, b = st.top().second;
                p[a] = a, s[b] -= s[a];
                st.pop();
            }
        }
    }
    for(int i = 1; i <= q; ++i) if(type[i] == 2) cout << ans[i] << "\n";
}   
 
int32_t main() {
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t = 1;
    //cin >> t;
    while(t--) {
        solve();
    }
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3796 KB Output is correct
2 Correct 2 ms 3836 KB Output is correct
3 Correct 42 ms 10576 KB Output is correct
4 Correct 6 ms 3924 KB Output is correct
5 Correct 43 ms 11380 KB Output is correct
6 Correct 39 ms 11588 KB Output is correct
7 Correct 40 ms 11596 KB Output is correct
8 Correct 43 ms 10004 KB Output is correct
9 Correct 59 ms 15896 KB Output is correct
10 Correct 44 ms 10884 KB Output is correct
11 Correct 46 ms 10600 KB Output is correct
12 Correct 58 ms 13180 KB Output is correct
13 Correct 55 ms 11208 KB Output is correct
14 Correct 49 ms 10484 KB Output is correct
15 Correct 53 ms 11208 KB Output is correct
16 Correct 48 ms 14192 KB Output is correct
17 Correct 48 ms 13172 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1342 ms 113744 KB Output is correct
2 Correct 1363 ms 113700 KB Output is correct
3 Correct 1366 ms 114000 KB Output is correct
4 Correct 1393 ms 113536 KB Output is correct
5 Correct 1399 ms 114204 KB Output is correct
6 Correct 2041 ms 171976 KB Output is correct
7 Correct 2028 ms 168400 KB Output is correct
8 Correct 2283 ms 168076 KB Output is correct
9 Correct 48 ms 5524 KB Output is correct
10 Correct 1111 ms 139596 KB Output is correct
11 Correct 1063 ms 138632 KB Output is correct
12 Correct 1220 ms 94164 KB Output is correct
13 Correct 1278 ms 86596 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1108 ms 99796 KB Output is correct
2 Correct 894 ms 105140 KB Output is correct
3 Correct 1320 ms 128000 KB Output is correct
4 Correct 1105 ms 99252 KB Output is correct
5 Correct 46 ms 5580 KB Output is correct
6 Correct 1264 ms 119220 KB Output is correct
7 Correct 982 ms 91336 KB Output is correct
8 Correct 841 ms 75528 KB Output is correct
9 Correct 753 ms 67740 KB Output is correct
10 Correct 676 ms 56260 KB Output is correct
11 Correct 797 ms 64404 KB Output is correct
12 Correct 637 ms 53956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1535 ms 47840 KB Output is correct
2 Correct 53 ms 5588 KB Output is correct
3 Correct 151 ms 6228 KB Output is correct
4 Correct 75 ms 6096 KB Output is correct
5 Correct 800 ms 47844 KB Output is correct
6 Correct 1484 ms 47684 KB Output is correct
7 Correct 785 ms 47772 KB Output is correct
8 Correct 764 ms 47432 KB Output is correct
9 Correct 749 ms 47360 KB Output is correct
10 Correct 777 ms 47896 KB Output is correct
11 Correct 1192 ms 47896 KB Output is correct
12 Correct 1108 ms 47932 KB Output is correct
13 Correct 1197 ms 48160 KB Output is correct
14 Correct 712 ms 47912 KB Output is correct
15 Correct 744 ms 47804 KB Output is correct
16 Correct 1479 ms 48448 KB Output is correct
17 Correct 1458 ms 52108 KB Output is correct
18 Correct 1439 ms 52400 KB Output is correct
19 Correct 1405 ms 52492 KB Output is correct
20 Correct 1221 ms 51540 KB Output is correct
21 Correct 1202 ms 51456 KB Output is correct
22 Correct 1404 ms 51180 KB Output is correct
23 Correct 812 ms 46164 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1342 ms 113744 KB Output is correct
2 Correct 1363 ms 113700 KB Output is correct
3 Correct 1366 ms 114000 KB Output is correct
4 Correct 1393 ms 113536 KB Output is correct
5 Correct 1399 ms 114204 KB Output is correct
6 Correct 2041 ms 171976 KB Output is correct
7 Correct 2028 ms 168400 KB Output is correct
8 Correct 2283 ms 168076 KB Output is correct
9 Correct 48 ms 5524 KB Output is correct
10 Correct 1111 ms 139596 KB Output is correct
11 Correct 1063 ms 138632 KB Output is correct
12 Correct 1220 ms 94164 KB Output is correct
13 Correct 1278 ms 86596 KB Output is correct
14 Correct 1108 ms 99796 KB Output is correct
15 Correct 894 ms 105140 KB Output is correct
16 Correct 1320 ms 128000 KB Output is correct
17 Correct 1105 ms 99252 KB Output is correct
18 Correct 46 ms 5580 KB Output is correct
19 Correct 1264 ms 119220 KB Output is correct
20 Correct 982 ms 91336 KB Output is correct
21 Correct 841 ms 75528 KB Output is correct
22 Correct 753 ms 67740 KB Output is correct
23 Correct 676 ms 56260 KB Output is correct
24 Correct 797 ms 64404 KB Output is correct
25 Correct 637 ms 53956 KB Output is correct
26 Correct 1404 ms 114036 KB Output is correct
27 Correct 1700 ms 143296 KB Output is correct
28 Correct 1378 ms 111928 KB Output is correct
29 Correct 978 ms 69048 KB Output is correct
30 Correct 1578 ms 129568 KB Output is correct
31 Correct 1616 ms 132168 KB Output is correct
32 Correct 1628 ms 132452 KB Output is correct
33 Correct 1369 ms 112436 KB Output is correct
34 Correct 1382 ms 112520 KB Output is correct
35 Correct 1400 ms 113116 KB Output is correct
36 Correct 1049 ms 75916 KB Output is correct
37 Correct 1057 ms 74868 KB Output is correct
38 Correct 1026 ms 73204 KB Output is correct
39 Correct 836 ms 59504 KB Output is correct
40 Correct 836 ms 58800 KB Output is correct
41 Correct 819 ms 58196 KB Output is correct
42 Correct 856 ms 56160 KB Output is correct
43 Correct 813 ms 55572 KB Output is correct
44 Correct 835 ms 54900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3796 KB Output is correct
2 Correct 2 ms 3836 KB Output is correct
3 Correct 42 ms 10576 KB Output is correct
4 Correct 6 ms 3924 KB Output is correct
5 Correct 43 ms 11380 KB Output is correct
6 Correct 39 ms 11588 KB Output is correct
7 Correct 40 ms 11596 KB Output is correct
8 Correct 43 ms 10004 KB Output is correct
9 Correct 59 ms 15896 KB Output is correct
10 Correct 44 ms 10884 KB Output is correct
11 Correct 46 ms 10600 KB Output is correct
12 Correct 58 ms 13180 KB Output is correct
13 Correct 55 ms 11208 KB Output is correct
14 Correct 49 ms 10484 KB Output is correct
15 Correct 53 ms 11208 KB Output is correct
16 Correct 48 ms 14192 KB Output is correct
17 Correct 48 ms 13172 KB Output is correct
18 Correct 1342 ms 113744 KB Output is correct
19 Correct 1363 ms 113700 KB Output is correct
20 Correct 1366 ms 114000 KB Output is correct
21 Correct 1393 ms 113536 KB Output is correct
22 Correct 1399 ms 114204 KB Output is correct
23 Correct 2041 ms 171976 KB Output is correct
24 Correct 2028 ms 168400 KB Output is correct
25 Correct 2283 ms 168076 KB Output is correct
26 Correct 48 ms 5524 KB Output is correct
27 Correct 1111 ms 139596 KB Output is correct
28 Correct 1063 ms 138632 KB Output is correct
29 Correct 1220 ms 94164 KB Output is correct
30 Correct 1278 ms 86596 KB Output is correct
31 Correct 1108 ms 99796 KB Output is correct
32 Correct 894 ms 105140 KB Output is correct
33 Correct 1320 ms 128000 KB Output is correct
34 Correct 1105 ms 99252 KB Output is correct
35 Correct 46 ms 5580 KB Output is correct
36 Correct 1264 ms 119220 KB Output is correct
37 Correct 982 ms 91336 KB Output is correct
38 Correct 841 ms 75528 KB Output is correct
39 Correct 753 ms 67740 KB Output is correct
40 Correct 676 ms 56260 KB Output is correct
41 Correct 797 ms 64404 KB Output is correct
42 Correct 637 ms 53956 KB Output is correct
43 Correct 1535 ms 47840 KB Output is correct
44 Correct 53 ms 5588 KB Output is correct
45 Correct 151 ms 6228 KB Output is correct
46 Correct 75 ms 6096 KB Output is correct
47 Correct 800 ms 47844 KB Output is correct
48 Correct 1484 ms 47684 KB Output is correct
49 Correct 785 ms 47772 KB Output is correct
50 Correct 764 ms 47432 KB Output is correct
51 Correct 749 ms 47360 KB Output is correct
52 Correct 777 ms 47896 KB Output is correct
53 Correct 1192 ms 47896 KB Output is correct
54 Correct 1108 ms 47932 KB Output is correct
55 Correct 1197 ms 48160 KB Output is correct
56 Correct 712 ms 47912 KB Output is correct
57 Correct 744 ms 47804 KB Output is correct
58 Correct 1479 ms 48448 KB Output is correct
59 Correct 1458 ms 52108 KB Output is correct
60 Correct 1439 ms 52400 KB Output is correct
61 Correct 1405 ms 52492 KB Output is correct
62 Correct 1221 ms 51540 KB Output is correct
63 Correct 1202 ms 51456 KB Output is correct
64 Correct 1404 ms 51180 KB Output is correct
65 Correct 812 ms 46164 KB Output is correct
66 Correct 1404 ms 114036 KB Output is correct
67 Correct 1700 ms 143296 KB Output is correct
68 Correct 1378 ms 111928 KB Output is correct
69 Correct 978 ms 69048 KB Output is correct
70 Correct 1578 ms 129568 KB Output is correct
71 Correct 1616 ms 132168 KB Output is correct
72 Correct 1628 ms 132452 KB Output is correct
73 Correct 1369 ms 112436 KB Output is correct
74 Correct 1382 ms 112520 KB Output is correct
75 Correct 1400 ms 113116 KB Output is correct
76 Correct 1049 ms 75916 KB Output is correct
77 Correct 1057 ms 74868 KB Output is correct
78 Correct 1026 ms 73204 KB Output is correct
79 Correct 836 ms 59504 KB Output is correct
80 Correct 836 ms 58800 KB Output is correct
81 Correct 819 ms 58196 KB Output is correct
82 Correct 856 ms 56160 KB Output is correct
83 Correct 813 ms 55572 KB Output is correct
84 Correct 835 ms 54900 KB Output is correct
85 Correct 1981 ms 118208 KB Output is correct
86 Correct 188 ms 14136 KB Output is correct
87 Correct 129 ms 18608 KB Output is correct
88 Correct 1203 ms 130404 KB Output is correct
89 Correct 1947 ms 117132 KB Output is correct
90 Correct 1238 ms 138952 KB Output is correct
91 Correct 1446 ms 116640 KB Output is correct
92 Correct 1436 ms 116640 KB Output is correct
93 Correct 2028 ms 154292 KB Output is correct
94 Correct 1627 ms 118104 KB Output is correct
95 Correct 1642 ms 117928 KB Output is correct
96 Correct 1999 ms 158836 KB Output is correct
97 Correct 1089 ms 82992 KB Output is correct
98 Correct 1043 ms 79704 KB Output is correct
99 Correct 1946 ms 119748 KB Output is correct
100 Correct 1887 ms 118740 KB Output is correct
101 Correct 1960 ms 118912 KB Output is correct
102 Correct 1967 ms 118792 KB Output is correct
103 Correct 2122 ms 164172 KB Output is correct
104 Correct 2166 ms 163756 KB Output is correct
105 Correct 1553 ms 91452 KB Output is correct
106 Correct 1247 ms 71288 KB Output is correct
107 Correct 1499 ms 98020 KB Output is correct
108 Correct 2033 ms 153296 KB Output is correct
109 Correct 1476 ms 153520 KB Output is correct