Submission #639728

#TimeUsernameProblemLanguageResultExecution timeMemory
639728KiriLL1caBridges (APIO19_bridges)C++17
Compilation error
0 ms0 KiB
#include <iostream> #include <vector> #include <array> #include <algorithm> #include <numeric> #define fr first #define sc second #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define pw(x) (1ll << x) #define sz(x) (int)((x).size()) #define pb push_back #define endl '\n' using namespace std; typedef long long ll; typedef long double ld; typedef pair <int, int> pii; typedef pair <ll, ll> pll; template <typename T> inline bool umin (T &a, const T &b) { if (a > b) { a = b; return 1; } return 0; } template <typename T> inline bool umax (T &a, const T &b) { if (a < b) { a = b; return 1; } return 0; } const int N = 1e5 + 100; const int buben = 1000;       struct dsu { vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;       }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;       }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                       }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                       }               }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                       }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                       }               }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v, w] : add[id - l]) {                                cnt += D.unite(u, v);                         }                        ans[id] = D.size(v);                        while (cnt--) D.rollback();               }       }        for (auto i : ans) if (~i) cout << i << endl;}signed main() {        ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);        int t = 1; // cin >> t;       while (t--) solve();       return 0;}

Compilation message (stderr)

bridges.cpp:25:25: error: extended character   is not valid in an identifier
   25 | const int buben = 1000;      
      |                         ^
bridges.cpp:25:28: error: extended character   is not valid in an identifier
   25 | const int buben = 1000;      
      |                           ^
bridges.cpp:25:31: error: extended character   is not valid in an identifier
   25 | const int buben = 1000;      
      |                             ^
bridges.cpp:28:21: error: extended character   is not valid in an identifier
   28 | vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;        }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;        }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                        }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                        }                }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                        }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                        }                }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v, w] : add[id - l]) {                                cnt += D.unite(u, v);                         }                        ans[id] = D.size(v);                        while (cnt--) D.rollback();                }        }        for (auto i : ans) if (~i) cout << i << endl;}signed main() {        ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);        int t = 1; // cin >> t;        while (t--) solve();        return 0;}
      |                     ^
bridges.cpp:28:24: error: extended character   is not valid in an identifier
   28 | vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;        }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;        }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                        }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                        }                }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                        }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                        }                }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v, w] : add[id - l]) {                                cnt += D.unite(u, v);                         }                        ans[id] = D.size(v);                        while (cnt--) D.rollback();                }        }        for (auto i : ans) if (~i) cout << i << endl;}signed main() {        ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);        int t = 1; // cin >> t;        while (t--) solve();        return 0;}
      |                       ^
bridges.cpp:28:27: error: extended character   is not valid in an identifier
   28 | vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;        }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;        }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                        }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                        }                }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                        }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                        }                }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v, w] : add[id - l]) {                                cnt += D.unite(u, v);                         }                        ans[id] = D.size(v);                        while (cnt--) D.rollback();                }        }        for (auto i : ans) if (~i) cout << i << endl;}signed main() {        ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);        int t = 1; // cin >> t;        while (t--) solve();        return 0;}
      |                         ^
bridges.cpp:28:30: error: extended character   is not valid in an identifier
   28 | vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;        }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;        }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                        }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                        }                }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                        }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                        }                }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v, w] : add[id - l]) {                                cnt += D.unite(u, v);                         }                        ans[id] = D.size(v);                        while (cnt--) D.rollback();                }        }        for (auto i : ans) if (~i) cout << i << endl;}signed main() {        ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);        int t = 1; // cin >> t;        while (t--) solve();        return 0;}
      |                           ^
bridges.cpp:28:60: error: extended character   is not valid in an identifier
   28 | vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;        }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;        }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                        }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                        }                }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                        }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                        }                }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v, w] : add[id - l]) {                                cnt += D.unite(u, v);                         }                        ans[id] = D.size(v);                        while (cnt--) D.rollback();                }        }        for (auto i : ans) if (~i) cout << i << endl;}signed main() {        ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);        int t = 1; // cin >> t;        while (t--) solve();        return 0;}
      |                                                        ^
bridges.cpp:28:63: error: extended character   is not valid in an identifier
   28 | vector <int> p, rk;        vector <array <int, 6>> st;        dsu () {}        dsu (int n) : p(n), rk(n, 1), st() { iota(all(p), 0); }        inline int par (int x) { while (p[x] != x) x = p[x]; return x; }        inline bool unite (int x, int y) {                x = par(x), y = par(y);                if (x == y) return 0;                if (rk[x] < rk[y]) swap(x, y);                st.pb({x, y, p[x], p[y], rk[x], rk[y]});                rk[x] += rk[y]; p[y] = x; return 1;        }        inline void rollback () {                if (!sz(st)) { cout << "ebis"; exit(0); }                auto [x, y, px, py, rkx, rky] = st.back(); st.pop_back();                p[x] = px; p[y] = py;                rk[x] = rkx; rk[y] = rky;        }        inline bool same (int x, int y) { return par(x) == par(y); }        inline int size (int x) { return rk[par(x)]; }};       inline void solve () {        int n, m; cin >> n >> m;        vector <array <int, 3>> edge (m);        for (auto &[i, j, k] : edge) cin >> i >> j >> k, --i, --j;        int q; cin >> q;        vector <array <int, 3>> qry (q);        for (auto &[t, i, j] : qry) cin >> t >> i >> j, --i;        vector <int> ans (q, -1);        for (int l = 0; l < q; l += buben) {                int r = min(q, l + buben);                vector <bool> chg (m);                vector <array <int, 3>> ask, unchg;                vector <int> upd;                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                chg[qry[i][1]] = 1; upd.pb(qry[i][1]);                        }                        else {                                ask.pb({qry[i][2], qry[i][1], i});                        }                }                                for (int i = 0; i < m; ++i) if (!chg[i]) unchg.pb({edge[i][2], edge[i][0], edge[i][1]});                vector <vector <array <int, 3>>> add (buben);                                for (int i = l; i < r; ++i) {                        if (qry[i][0] == 1) {                                edge[qry[i][1]][2] = qry[i][2];                        }                        else {                                for (auto j : upd) if (edge[j][2] >= qry[i][2]) add[i - l].pb(edge[j]);                        }                }                                sort(rall(ask)); sort(rall(unchg));                                int uk = 0;                dsu D (n);                for (auto [d, v, id] : ask) {                        while (uk < sz(unchg) && unchg[uk][0] >= d) {                                D.unite(unchg[uk][1], unchg[uk][2]);                                ++uk;                         }                        int cnt = 0;                        for (auto [u, v,