84402024-01-16 11:06:49anonMaximális kaktusz (45 pont)cpp17Hibás válasz 24/4528ms9900 KiB
#include <bits/stdc++.h>
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
using namespace std;
typedef long long ll;
ll remove_cycles(ll vertex, ll parent, vector<bool> &bad_nodes, vector<bool> &vis, const vector<vector<ll>> &graph) {
    ll detected, result;
    if(vis[vertex]) {
        bad_nodes[vertex] = true;
        return vertex;
    }
    vis[vertex] = true;
    result = 0;
    for(const auto &x : graph[vertex]) {
        if(x == parent)
            continue;
        detected = remove_cycles(x, vertex, bad_nodes, vis, graph);
        if(detected) {
            bad_nodes[vertex] = true;
            if(detected == vertex)
                return 0;
            else
                result = detected;
        }
    }
    return result;
}
ll dfs(ll vertex, ll streak, ll &ans, vector<bool> &vis, const vector<vector<ll>> &graph) {
    ll nc, rc, res;
    if(streak >= 3) {
        ans++;
        streak = 0;
    }
    vis[vertex] = true;
    nc = 0;
    for(const auto &x : graph[vertex])
        nc += !vis[x];
    rc = 0;
    for(const auto &x : graph[vertex]) {
        if(vis[x])
            continue;
        res = dfs(x, 1 + (nc == 1) * streak, ans, vis, graph);
        if(nc == 1)
            return res;
        else if(res)
            rc++;
    }
    if(nc >= 2 && rc >= 2 && streak) {
        ans++;
        return streak - 1;
    }
    return streak;
}
int main() {
    FastIO;
    ll i, u, v, ans, N, M;
    cin >> N >> M;
    vector<vector<ll>> graph(N + 1);
    for(i = 0; i < M; i++) {
        cin >> u >> v;
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    vector<bool> vis(N + 1, false);
    vector<bool> bad_nodes(N + 1, false);
    remove_cycles(1, -1, bad_nodes, vis, graph);
    ans = 0;
    for(i = 1; i <= N; i++) {
        if(!bad_nodes[i])
            dfs(i, 1, ans, bad_nodes, graph);
    }
    cout << ans << '\n';
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base24/45
1Elfogadva0/03ms2104 KiB
2Elfogadva0/03ms2108 KiB
3Elfogadva1/13ms2256 KiB
4Elfogadva1/13ms2336 KiB
5Elfogadva1/12ms2336 KiB
6Elfogadva2/23ms2468 KiB
7Elfogadva2/23ms2676 KiB
8Hibás válasz0/22ms2724 KiB
9Hibás válasz0/12ms2728 KiB
10Elfogadva1/13ms2732 KiB
11Hibás válasz0/12ms2732 KiB
12Hibás válasz0/13ms2888 KiB
13Hibás válasz0/13ms2864 KiB
14Hibás válasz0/13ms2864 KiB
15Hibás válasz0/13ms3284 KiB
16Elfogadva1/13ms3392 KiB
17Hibás válasz0/13ms3348 KiB
18Hibás válasz0/128ms9292 KiB
19Elfogadva1/124ms9856 KiB
20Hibás válasz0/128ms9164 KiB
21Hibás válasz0/128ms9416 KiB
22Elfogadva2/220ms9320 KiB
23Hibás válasz0/220ms9532 KiB
24Elfogadva2/219ms9648 KiB
25Elfogadva2/219ms9608 KiB
26Elfogadva1/13ms3636 KiB
27Hibás válasz0/13ms3500 KiB
28Hibás válasz0/13ms3556 KiB
29Elfogadva1/125ms9828 KiB
30Hibás válasz0/125ms9900 KiB
31Hibás válasz0/123ms9660 KiB
32Hibás válasz0/123ms9856 KiB
33Hibás válasz0/225ms9864 KiB
34Elfogadva2/224ms9864 KiB
35Elfogadva2/221ms9500 KiB
36Elfogadva2/221ms9484 KiB