200652025-12-31 13:51:25AblablablaMaximális kaktusz (45 pont)cpp17Elfogadva 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";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base45/45
1Elfogadva0/01ms500 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva1/11ms508 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva2/21ms572 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms544 KiB
9Elfogadva1/11ms508 KiB
10Elfogadva1/11ms500 KiB
11Elfogadva1/11ms492 KiB
12Elfogadva1/11ms316 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/11ms348 KiB
15Elfogadva1/12ms436 KiB
16Elfogadva1/12ms468 KiB
17Elfogadva1/12ms428 KiB
18Elfogadva1/152ms3560 KiB
19Elfogadva1/146ms3568 KiB
20Elfogadva1/154ms3340 KiB
21Elfogadva1/154ms3532 KiB
22Elfogadva2/239ms3648 KiB
23Elfogadva2/239ms3632 KiB
24Elfogadva2/239ms3708 KiB
25Elfogadva2/237ms3504 KiB
26Elfogadva1/11ms512 KiB
27Elfogadva1/11ms316 KiB
28Elfogadva1/12ms316 KiB
29Elfogadva1/148ms3580 KiB
30Elfogadva1/148ms3504 KiB
31Elfogadva1/145ms3592 KiB
32Elfogadva1/146ms3668 KiB
33Elfogadva2/250ms3552 KiB
34Elfogadva2/250ms3456 KiB
35Elfogadva2/245ms3504 KiB
36Elfogadva2/243ms3636 KiB