3620 2023. 03. 01 11:23:40 kdb Forgalmas utak cpp17 Időlimit túllépés 45/100 1.085s 5284 KiB
#include <algorithm>
#include <climits>
#include <iostream>
#include <vector>

using namespace std;

struct edge {
    int u, v;
};

vector<vector<int>> graph;
vector<int> t;
vector<int> l;
vector<bool> done;
int tm;
int bs;

void dfs(int const cur, int const par) {
    done[cur] = true;

    t[cur] = tm;
    tm++;
    l[cur] = t[cur];

    for (int const& neigh : graph[cur]) {
        if (done[neigh]) {
            if (neigh != par)
                l[cur] = min(l[cur], t[neigh]);
            continue;
        }

        dfs(neigh, cur);

        l[cur] = min(l[cur], l[neigh]);
    }

    if (l[cur] == t[cur] && par != -1)
        bs++;
}

void busy() {
    for (int i = 0; i < graph.size(); i++) {
        t[i] = -1;
        l[i] = INT_MAX / 2;
        done[i] = false;
    }
    tm = 0;
    bs = 0;

    for (int i = 0; i < graph.size(); i++)
        if (!done[i])
            dfs(i, -1);

    /*for (int i = 0; i < graph.size(); i++) {
        cout << t[i] << " " << l[i] << "\n";
    }*/

    cout << bs << "\n";
}

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

    int n, m;
    cin >> n >> m;

    graph.resize(n);
    t.resize(n);
    l.resize(n);
    done.resize(n);
    vector<edge> edges(m);

    for (auto& e : edges) {
        cin >> e.u >> e.v;
        e.u--; e.v--;

        graph[e.u].push_back(e.v);
        graph[e.v].push_back(e.u);
    }

    for (auto& e : edges) {
        graph[e.u].erase(find(graph[e.u].begin(), graph[e.u].end(), e.v));
        graph[e.v].erase(find(graph[e.v].begin(), graph[e.v].end(), e.u));

        busy();

        graph[e.u].push_back(e.v);
        graph[e.v].push_back(e.u);
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 2100 KiB
2 Elfogadva 3ms 2160 KiB
subtask2 21/21
3 Elfogadva 4ms 2292 KiB
4 Elfogadva 4ms 2512 KiB
5 Elfogadva 4ms 2592 KiB
6 Elfogadva 4ms 2676 KiB
7 Elfogadva 4ms 2720 KiB
8 Elfogadva 4ms 2848 KiB
9 Elfogadva 4ms 3068 KiB
subtask3 24/24
10 Elfogadva 3ms 3296 KiB
11 Elfogadva 14ms 3748 KiB
12 Elfogadva 41ms 3948 KiB
13 Elfogadva 81ms 3932 KiB
14 Elfogadva 119ms 3852 KiB
15 Elfogadva 119ms 3992 KiB
16 Elfogadva 119ms 3956 KiB
17 Elfogadva 120ms 4068 KiB
18 Elfogadva 119ms 4080 KiB
subtask4 0/20
19 Elfogadva 112ms 4280 KiB
20 Elfogadva 400ms 4604 KiB
21 Időlimit túllépés 1.052s 3672 KiB
22 Időlimit túllépés 1.06s 3976 KiB
23 Időlimit túllépés 1.083s 4128 KiB
24 Időlimit túllépés 1.062s 4132 KiB
25 Időlimit túllépés 1.057s 4164 KiB
26 Időlimit túllépés 1.085s 4448 KiB
27 Időlimit túllépés 1.082s 4596 KiB
subtask5 0/35
28 Elfogadva 14ms 4856 KiB
29 Elfogadva 414ms 5284 KiB
30 Időlimit túllépés 1.062s 4396 KiB
31 Időlimit túllépés 1.062s 4732 KiB
32 Időlimit túllépés 1.077s 4732 KiB
33 Időlimit túllépés 1.06s 4796 KiB
34 Időlimit túllépés 1.065s 4824 KiB
35 Időlimit túllépés 1.07s 4684 KiB
36 Időlimit túllépés 1.06s 4956 KiB