217652026-01-13 20:02:22TaxiradioMaximális kaktusz (45 pont)cpp17Accepted 45/4559ms5892 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];
            b = max(b , dp[x][2]-dp[x][0]);
            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;
}
SubtaskSumTestVerdictTimeMemory
base45/45
1Accepted0/01ms316 KiB
2Accepted0/01ms500 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/11ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms364 KiB
8Accepted2/21ms540 KiB
9Accepted1/11ms316 KiB
10Accepted1/11ms316 KiB
11Accepted1/11ms316 KiB
12Accepted1/11ms316 KiB
13Accepted1/11ms316 KiB
14Accepted1/11ms316 KiB
15Accepted1/12ms316 KiB
16Accepted1/12ms316 KiB
17Accepted1/12ms316 KiB
18Accepted1/152ms5608 KiB
19Accepted1/145ms5860 KiB
20Accepted1/157ms5716 KiB
21Accepted1/159ms5788 KiB
22Accepted2/239ms5804 KiB
23Accepted2/239ms5804 KiB
24Accepted2/243ms5812 KiB
25Accepted2/243ms5868 KiB
26Accepted1/11ms508 KiB
27Accepted1/11ms316 KiB
28Accepted1/12ms316 KiB
29Accepted1/150ms5824 KiB
30Accepted1/154ms5864 KiB
31Accepted1/148ms5892 KiB
32Accepted1/146ms5880 KiB
33Accepted2/252ms5808 KiB
34Accepted2/250ms5804 KiB
35Accepted2/246ms5656 KiB
36Accepted2/248ms5804 KiB