190392025-11-18 16:29:30zhuyiPáros részgráfokcpp17Time limit exceeded 27/1002.598s5336 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class UnionFind {
private:
    vector<int> parent;
    vector<int> parity; // paritás a gyökérhez képest

public:
    UnionFind(int n) : parent(n + 1), parity(n + 1, 0) {
        for (int i = 0; i <= n; i++) {
            parent[i] = i;
        }
    }

    pair<int, int> find(int x) {
        if (parent[x] == x) {
            return {x, 0};
        }
        auto [root, par] = find(parent[x]);
        parent[x] = root;
        parity[x] ^= par;
        return {root, parity[x]};
    }

    // Visszatér true-val, ha sikerült egyesíteni (nem volt páratlan kör)
    // Visszatér false-szal, ha páratlan kör keletkezett
    bool unite(int a, int b) {
        auto [root_a, par_a] = find(a);
        auto [root_b, par_b] = find(b);

        if (root_a == root_b) {
            // Már ugyanabban a komponensben vannak
            // Páratlan kör van, ha a paritásuk azonos
            return par_a != par_b;
        }

        // Egyesítjük a két komponenst
        parent[root_b] = root_a;
        parity[root_b] = par_a ^ par_b ^ 1;
        return true;
    }

    void reset(int n) {
        for (int i = 0; i <= n; i++) {
            parent[i] = i;
            parity[i] = 0;
        }
    }
};

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, M;
    cin >> N >> M;

    vector<pair<int, int>> edges(M);
    for (int i = 0; i < M; i++) {
        cin >> edges[i].first >> edges[i].second;
    }

    long long result = 0;
    int l = 0;

    for (int r = 0; r < M; r++) {
        // Próbáljuk meg hozzáadni az r-edik élt
        // Újraépítjük a Union-Find-ot az [l, r] intervallumra
        bool has_odd_cycle = false;

        while (l <= r) {
            UnionFind uf(N);
            has_odd_cycle = false;

            // Építsük fel a gráfot az [l, r] élekkel
            for (int i = l; i <= r; i++) {
                if (!uf.unite(edges[i].first, edges[i].second)) {
                    has_odd_cycle = true;
                    break;
                }
            }

            if (!has_odd_cycle) {
                // PG(l, r) páros gráf
                break;
            } else {
                // Páratlan kör van, növeljük l-et
                l++;
            }
        }

        if (l <= r) {
            // [l, r] intervallum páros, így [l, r], [l+1, r], ..., [r, r] mind páros
            result += (r - l + 1);
        }
    }

    cout << result << endl;

    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask210/10
3Accepted1ms316 KiB
4Accepted1ms316 KiB
5Accepted1ms316 KiB
6Accepted1ms508 KiB
7Accepted1ms316 KiB
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Accepted1ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
subtask37/7
13Accepted1ms316 KiB
14Accepted1ms316 KiB
15Accepted1ms316 KiB
16Accepted1ms508 KiB
17Accepted1ms316 KiB
18Accepted1ms316 KiB
19Accepted1ms316 KiB
20Accepted1ms316 KiB
21Accepted1ms316 KiB
22Accepted1ms316 KiB
23Accepted1ms316 KiB
24Accepted1ms316 KiB
25Accepted1ms316 KiB
26Accepted1ms316 KiB
27Accepted1ms316 KiB
28Accepted1ms316 KiB
29Accepted1ms316 KiB
30Accepted1ms316 KiB
31Accepted2ms316 KiB
32Accepted1ms316 KiB
subtask410/10
33Accepted1ms316 KiB
34Accepted1ms316 KiB
35Accepted1ms316 KiB
36Accepted1ms508 KiB
37Accepted1ms316 KiB
38Accepted1ms316 KiB
39Accepted1ms316 KiB
40Accepted1ms316 KiB
41Accepted1ms316 KiB
42Accepted1ms316 KiB
43Accepted1ms316 KiB
44Accepted1ms316 KiB
45Accepted1ms316 KiB
46Accepted1ms316 KiB
47Accepted1ms316 KiB
48Accepted1ms316 KiB
49Accepted1ms316 KiB
50Accepted1ms316 KiB
51Accepted2ms316 KiB
52Accepted1ms316 KiB
53Accepted4ms316 KiB
54Accepted6ms444 KiB
55Accepted3ms316 KiB
56Accepted4ms500 KiB
57Accepted6ms440 KiB
58Accepted4ms316 KiB
59Accepted6ms324 KiB
60Accepted2ms440 KiB
61Accepted2ms316 KiB
62Accepted3ms316 KiB
subtask50/20
63Accepted1ms316 KiB
64Accepted1ms316 KiB
65Accepted1ms316 KiB
66Accepted1ms508 KiB
67Accepted1ms316 KiB
68Accepted1ms316 KiB
69Accepted1ms316 KiB
70Accepted1ms316 KiB
71Accepted1ms316 KiB
72Accepted1ms316 KiB
73Accepted1ms316 KiB
74Accepted1ms316 KiB
75Accepted1ms316 KiB
76Accepted1ms316 KiB
77Accepted1ms316 KiB
78Accepted1ms316 KiB
79Accepted1ms316 KiB
80Accepted1ms316 KiB
81Accepted2ms316 KiB
82Accepted1ms316 KiB
83Accepted4ms316 KiB
84Accepted6ms444 KiB
85Accepted3ms316 KiB
86Accepted4ms500 KiB
87Accepted6ms440 KiB
88Accepted4ms316 KiB
89Accepted6ms324 KiB
90Accepted2ms440 KiB
91Accepted2ms316 KiB
92Accepted3ms316 KiB
93Time limit exceeded2.598s668 KiB
94Time limit exceeded2.575s1040 KiB
95Time limit exceeded2.552s1140 KiB
96Time limit exceeded2.572s1036 KiB
97Time limit exceeded2.536s1100 KiB
98Time limit exceeded2.553s1140 KiB
99Time limit exceeded2.553s1036 KiB
100Time limit exceeded2.555s1252 KiB
101Time limit exceeded2.582s564 KiB
102Time limit exceeded2.556s1100 KiB
subtask60/14
103Accepted1ms316 KiB
104Accepted1ms316 KiB
105Accepted1ms316 KiB
106Accepted1ms508 KiB
107Accepted1ms316 KiB
108Accepted1ms316 KiB
109Accepted1ms316 KiB
110Accepted1ms316 KiB
111Accepted1ms316 KiB
112Accepted1ms316 KiB
113Accepted1ms316 KiB
114Accepted1ms316 KiB
115Accepted1ms316 KiB
116Accepted1ms316 KiB
117Accepted1ms316 KiB
118Accepted1ms316 KiB
119Accepted1ms316 KiB
120Accepted1ms316 KiB
121Accepted2ms316 KiB
122Accepted1ms316 KiB
123Accepted4ms316 KiB
124Accepted6ms444 KiB
125Accepted3ms316 KiB
126Accepted4ms500 KiB
127Accepted6ms440 KiB
128Accepted4ms316 KiB
129Accepted6ms324 KiB
130Accepted2ms440 KiB
131Accepted2ms316 KiB
132Accepted3ms316 KiB
133Time limit exceeded2.598s668 KiB
134Time limit exceeded2.575s1040 KiB
135Time limit exceeded2.552s1140 KiB
136Time limit exceeded2.572s1036 KiB
137Time limit exceeded2.536s1100 KiB
138Time limit exceeded2.553s1140 KiB
139Time limit exceeded2.553s1036 KiB
140Time limit exceeded2.555s1252 KiB
141Time limit exceeded2.582s564 KiB
142Time limit exceeded2.556s1100 KiB
143Time limit exceeded2.548s1360 KiB
144Time limit exceeded2.565s1392 KiB
145Time limit exceeded2.568s1392 KiB
146Time limit exceeded2.546s1268 KiB
147Time limit exceeded2.571s1404 KiB
148Time limit exceeded2.573s1560 KiB
149Time limit exceeded2.575s1472 KiB
150Time limit exceeded2.573s1388 KiB
151Time limit exceeded2.572s1800 KiB
152Time limit exceeded2.555s1248 KiB
subtask70/20
153Accepted1ms316 KiB
154Accepted1ms316 KiB
155Accepted1ms316 KiB
156Accepted1ms508 KiB
157Accepted1ms316 KiB
158Accepted1ms316 KiB
159Accepted1ms316 KiB
160Accepted1ms316 KiB
161Accepted1ms316 KiB
162Accepted1ms316 KiB
163Accepted1ms316 KiB
164Accepted1ms316 KiB
165Accepted1ms316 KiB
166Accepted1ms316 KiB
167Accepted1ms316 KiB
168Accepted1ms316 KiB
169Accepted1ms316 KiB
170Accepted1ms316 KiB
171Accepted2ms316 KiB
172Accepted1ms316 KiB
173Accepted4ms316 KiB
174Accepted6ms444 KiB
175Accepted3ms316 KiB
176Accepted4ms500 KiB
177Accepted6ms440 KiB
178Accepted4ms316 KiB
179Accepted6ms324 KiB
180Accepted2ms440 KiB
181Accepted2ms316 KiB
182Accepted3ms316 KiB
183Time limit exceeded2.598s668 KiB
184Time limit exceeded2.575s1040 KiB
185Time limit exceeded2.552s1140 KiB
186Time limit exceeded2.572s1036 KiB
187Time limit exceeded2.536s1100 KiB
188Time limit exceeded2.553s1140 KiB
189Time limit exceeded2.553s1036 KiB
190Time limit exceeded2.555s1252 KiB
191Time limit exceeded2.582s564 KiB
192Time limit exceeded2.556s1100 KiB
193Time limit exceeded2.548s1360 KiB
194Time limit exceeded2.565s1392 KiB
195Time limit exceeded2.568s1392 KiB
196Time limit exceeded2.546s1268 KiB
197Time limit exceeded2.571s1404 KiB
198Time limit exceeded2.573s1560 KiB
199Time limit exceeded2.575s1472 KiB
200Time limit exceeded2.573s1388 KiB
201Time limit exceeded2.572s1800 KiB
202Time limit exceeded2.555s1248 KiB
203Time limit exceeded2.562s1636 KiB
204Time limit exceeded2.575s2268 KiB
205Time limit exceeded2.575s2208 KiB
206Time limit exceeded2.563s1904 KiB
207Time limit exceeded2.572s2016 KiB
208Time limit exceeded2.575s2004 KiB
209Time limit exceeded2.575s2008 KiB
210Time limit exceeded2.575s2100 KiB
211Time limit exceeded2.573s2192 KiB
212Time limit exceeded2.566s1844 KiB
subtask80/19
213Accepted1ms500 KiB
214Accepted1ms316 KiB
215Accepted1ms316 KiB
216Accepted1ms316 KiB
217Accepted1ms316 KiB
218Accepted1ms508 KiB
219Accepted1ms316 KiB
220Accepted1ms316 KiB
221Accepted1ms316 KiB
222Accepted1ms316 KiB
223Accepted1ms316 KiB
224Accepted1ms316 KiB
225Accepted1ms316 KiB
226Accepted1ms316 KiB
227Accepted1ms316 KiB
228Accepted1ms316 KiB
229Accepted1ms316 KiB
230Accepted1ms316 KiB
231Accepted1ms316 KiB
232Accepted1ms316 KiB
233Accepted2ms316 KiB
234Accepted1ms316 KiB
235Accepted4ms316 KiB
236Accepted6ms444 KiB
237Accepted3ms316 KiB
238Accepted4ms500 KiB
239Accepted6ms440 KiB
240Accepted4ms316 KiB
241Accepted6ms324 KiB
242Accepted2ms440 KiB
243Accepted2ms316 KiB
244Accepted3ms316 KiB
245Time limit exceeded2.598s668 KiB
246Time limit exceeded2.575s1040 KiB
247Time limit exceeded2.552s1140 KiB
248Time limit exceeded2.572s1036 KiB
249Time limit exceeded2.536s1100 KiB
250Time limit exceeded2.553s1140 KiB
251Time limit exceeded2.553s1036 KiB
252Time limit exceeded2.555s1252 KiB
253Time limit exceeded2.582s564 KiB
254Time limit exceeded2.556s1100 KiB
255Time limit exceeded2.548s1360 KiB
256Time limit exceeded2.565s1392 KiB
257Time limit exceeded2.568s1392 KiB
258Time limit exceeded2.546s1268 KiB
259Time limit exceeded2.571s1404 KiB
260Time limit exceeded2.573s1560 KiB
261Time limit exceeded2.575s1472 KiB
262Time limit exceeded2.573s1388 KiB
263Time limit exceeded2.572s1800 KiB
264Time limit exceeded2.555s1248 KiB
265Time limit exceeded2.562s1636 KiB
266Time limit exceeded2.575s2268 KiB
267Time limit exceeded2.575s2208 KiB
268Time limit exceeded2.563s1904 KiB
269Time limit exceeded2.572s2016 KiB
270Time limit exceeded2.575s2004 KiB
271Time limit exceeded2.575s2008 KiB
272Time limit exceeded2.575s2100 KiB
273Time limit exceeded2.573s2192 KiB
274Time limit exceeded2.566s1844 KiB
275Time limit exceeded2.573s5128 KiB
276Time limit exceeded2.575s5136 KiB
277Time limit exceeded2.598s5136 KiB
278Time limit exceeded2.598s5136 KiB
279Time limit exceeded2.578s5140 KiB
280Time limit exceeded2.578s5304 KiB
281Time limit exceeded2.598s5132 KiB
282Time limit exceeded2.598s5336 KiB
283Time limit exceeded2.588s5140 KiB
284Time limit exceeded2.588s5232 KiB