217642026-01-13 19:59:30TaxiradioMaximális kaktusz (45 pont)cpp17Wrong answer 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;
}
SubtaskSumTestVerdictTimeMemory
base7/45
1Accepted0/01ms316 KiB
2Wrong answer0/01ms316 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/11ms316 KiB
6Wrong answer0/21ms316 KiB
7Accepted2/21ms316 KiB
8Wrong answer0/21ms372 KiB
9Wrong answer0/11ms316 KiB
10Wrong answer0/11ms316 KiB
11Wrong answer0/11ms316 KiB
12Wrong answer0/11ms316 KiB
13Wrong answer0/11ms332 KiB
14Wrong answer0/11ms316 KiB
15Wrong answer0/12ms388 KiB
16Accepted1/12ms316 KiB
17Wrong answer0/12ms448 KiB
18Wrong answer0/150ms5748 KiB
19Accepted1/148ms5792 KiB
20Wrong answer0/159ms5688 KiB
21Wrong answer0/154ms5684 KiB
22Wrong answer0/239ms5692 KiB
23Wrong answer0/241ms5760 KiB
24Wrong answer0/241ms5804 KiB
25Wrong answer0/239ms5804 KiB
26Wrong answer0/11ms316 KiB
27Wrong answer0/11ms500 KiB
28Wrong answer0/12ms316 KiB
29Wrong answer0/150ms5692 KiB
30Wrong answer0/152ms5804 KiB
31Wrong answer0/146ms5824 KiB
32Wrong answer0/146ms5848 KiB
33Wrong answer0/256ms5844 KiB
34Wrong answer0/250ms5636 KiB
35Wrong answer0/250ms5792 KiB
36Wrong answer0/250ms5812 KiB