36202023-03-01 11:23:40kdbForgalmas utakcpp17Időlimit túllépés 45/1001.085s5284 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms2100 KiB
2Elfogadva3ms2160 KiB
subtask221/21
3Elfogadva4ms2292 KiB
4Elfogadva4ms2512 KiB
5Elfogadva4ms2592 KiB
6Elfogadva4ms2676 KiB
7Elfogadva4ms2720 KiB
8Elfogadva4ms2848 KiB
9Elfogadva4ms3068 KiB
subtask324/24
10Elfogadva3ms3296 KiB
11Elfogadva14ms3748 KiB
12Elfogadva41ms3948 KiB
13Elfogadva81ms3932 KiB
14Elfogadva119ms3852 KiB
15Elfogadva119ms3992 KiB
16Elfogadva119ms3956 KiB
17Elfogadva120ms4068 KiB
18Elfogadva119ms4080 KiB
subtask40/20
19Elfogadva112ms4280 KiB
20Elfogadva400ms4604 KiB
21Időlimit túllépés1.052s3672 KiB
22Időlimit túllépés1.06s3976 KiB
23Időlimit túllépés1.083s4128 KiB
24Időlimit túllépés1.062s4132 KiB
25Időlimit túllépés1.057s4164 KiB
26Időlimit túllépés1.085s4448 KiB
27Időlimit túllépés1.082s4596 KiB
subtask50/35
28Elfogadva14ms4856 KiB
29Elfogadva414ms5284 KiB
30Időlimit túllépés1.062s4396 KiB
31Időlimit túllépés1.062s4732 KiB
32Időlimit túllépés1.077s4732 KiB
33Időlimit túllépés1.06s4796 KiB
34Időlimit túllépés1.065s4824 KiB
35Időlimit túllépés1.07s4684 KiB
36Időlimit túllépés1.06s4956 KiB