200652025-12-31 13:51:25AblablablaMaximális kaktusz (45 pont)cpp17Accepted 45/4554ms3708 KiB
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> csucsok;
vector<int> tin, l;
int t;

int dfs(int akt, int elozo = -1){
    tin[akt] = l[akt] = t++;

    for(int x : csucsok[akt]){
        if(tin[x] != -1){
            if(x != elozo){
                l[akt] = min(l[akt], tin[x]);
            }
            continue;
        }

        l[akt] = min(l[akt], dfs(x, akt));
    }

    return l[akt];
}

vector<bool> bejart;
int ans = 0;

int szamol(int akt){
    bejart[akt] = 1;
    int vissza = 1;
    bool egyes = 0;

    for(int x : csucsok[akt]){
        if(bejart[x]) continue;

        int a = szamol(x);

        if(vissza == 0) continue;

        if(a == 1){
            if(!egyes){
                egyes = 1;
                vissza = 2;
            } else{
                ans++;
                vissza = 0;
            }
        } else if(a == 2){
            ans++;
            vissza = 0;
        }
    }

    return vissza;
}

int main()
{
    int n, m;
    cin >> n >> m;

    csucsok.assign(n, vector<int>());
    for(int i = 0; i < m; i++){
        int a, b;
        cin >> a >> b;
        a--; b--;

        csucsok[a].push_back(b);
        csucsok[b].push_back(a);
    }

    tin.assign(n, -1);
    l.assign(n, -1);
    t = 1;

    dfs(0);

    bejart.assign(n, 0);
    for(int i = 0; i < n; i++){
        if(l[i] < tin[i]){
            bejart[i] = 1;
            continue;
        }

        for(int x : csucsok[i]){
            if(tin[i] < tin[x]){
                if(l[x] <= tin[i]){
                    bejart[i] = 1;
                    break;
                }
            }
        }
    }

    for(int i = 0; i < n; i++){
        if(bejart[i]) continue;

        szamol(i);
    }

    cout << ans << "\n";
}
SubtaskSumTestVerdictTimeMemory
base45/45
1Accepted0/01ms500 KiB
2Accepted0/01ms316 KiB
3Accepted1/11ms508 KiB
4Accepted1/11ms316 KiB
5Accepted1/11ms316 KiB
6Accepted2/21ms572 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms544 KiB
9Accepted1/11ms508 KiB
10Accepted1/11ms500 KiB
11Accepted1/11ms492 KiB
12Accepted1/11ms316 KiB
13Accepted1/11ms316 KiB
14Accepted1/11ms348 KiB
15Accepted1/12ms436 KiB
16Accepted1/12ms468 KiB
17Accepted1/12ms428 KiB
18Accepted1/152ms3560 KiB
19Accepted1/146ms3568 KiB
20Accepted1/154ms3340 KiB
21Accepted1/154ms3532 KiB
22Accepted2/239ms3648 KiB
23Accepted2/239ms3632 KiB
24Accepted2/239ms3708 KiB
25Accepted2/237ms3504 KiB
26Accepted1/11ms512 KiB
27Accepted1/11ms316 KiB
28Accepted1/12ms316 KiB
29Accepted1/148ms3580 KiB
30Accepted1/148ms3504 KiB
31Accepted1/145ms3592 KiB
32Accepted1/146ms3668 KiB
33Accepted2/250ms3552 KiB
34Accepted2/250ms3456 KiB
35Accepted2/245ms3504 KiB
36Accepted2/243ms3636 KiB