217642026-01-13 19:59:30TaxiradioMaximális kaktusz (45 pont)cpp17Hibás válasz 7/4559ms5848 KiB
// Source: https://usaco.guide/general/io

#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

#define int int64_t


vector<vector<int>> g;
vector<int> l , c , w; 

int t = 0;

void dfs(int h , int p){
    l[h] = w[h] = t++;
    for(int x : g[h]){
        if(l[x] == -1){
            dfs(x , h);
            l[h] = min(l[h] , l[x]);
            if(l[x] <= w[h])c[h]=1;
        }else if(x != p){
            l[h] = min(l[h] , w[x]);
            if(w[x] < w[h])c[h]=1;
        }
    }
}

vector<array<int , 3>> dp;
vector<bool> vis;

void dfs2(int h , int p){
    if(c[h]==1)return;
    vis[h] = 1;
    int a = -1000 , b = -10000 , d = 0 , e = -100000;
    for(int x : g[h]){
        if(x != p && !c[x]){
            dfs2(x , h);
            d+=dp[x][0];
            int e = dp[x][2]-dp[x][0];
            b = max(b , e);
            e = max(dp[x][1]-dp[x][0] , e);
            if(b > a)swap(b , a);
        }
    }
    dp[h][1] = d+a+1;
    dp[h][2] = d;
    dp[h][0] = max(d , max(d+e , d+a+b+1));
    //cout << h+1 << " " << dp[h][0] << " " << dp[h][1] << " " << dp[h][2] << endl;
}

int32_t main() {
    int n , m ; cin >> n >> m;
    g.resize(n);
    for(int i = 0; i < m; i++){
        int a , b; cin >> a >> b;a--;b--;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    c.resize(n , 0);
    l.resize(n , -1);
    w.resize(n , -1);
    dfs(0 , -1);
    dp.resize(n , {0 , 0 , 0});
    vis.resize(n , 0);
    int ans = 0;
    for(int i = 0; i < n;i++){
        //cout << c[i] << endl;
        if(vis[i])continue;
        dfs2(i , -1);
        ans += dp[i][0];
    }
    cout << ans << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base7/45
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms316 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Hibás válasz0/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Hibás válasz0/21ms372 KiB
9Hibás válasz0/11ms316 KiB
10Hibás válasz0/11ms316 KiB
11Hibás válasz0/11ms316 KiB
12Hibás válasz0/11ms316 KiB
13Hibás válasz0/11ms332 KiB
14Hibás válasz0/11ms316 KiB
15Hibás válasz0/12ms388 KiB
16Elfogadva1/12ms316 KiB
17Hibás válasz0/12ms448 KiB
18Hibás válasz0/150ms5748 KiB
19Elfogadva1/148ms5792 KiB
20Hibás válasz0/159ms5688 KiB
21Hibás válasz0/154ms5684 KiB
22Hibás válasz0/239ms5692 KiB
23Hibás válasz0/241ms5760 KiB
24Hibás válasz0/241ms5804 KiB
25Hibás válasz0/239ms5804 KiB
26Hibás válasz0/11ms316 KiB
27Hibás válasz0/11ms500 KiB
28Hibás válasz0/12ms316 KiB
29Hibás válasz0/150ms5692 KiB
30Hibás válasz0/152ms5804 KiB
31Hibás válasz0/146ms5824 KiB
32Hibás válasz0/146ms5848 KiB
33Hibás válasz0/256ms5844 KiB
34Hibás válasz0/250ms5636 KiB
35Hibás válasz0/250ms5792 KiB
36Hibás válasz0/250ms5812 KiB