제출 #638842

#제출 시각아이디문제언어결과실행 시간메모리
638842NotLinuxCijanobakterije (COCI21_cijanobakterije)C++14
70 / 70
65 ms15436 KiB
/**
 * author: NotLinux
 * created: 07.09.2022 ~ 18:41:58
**/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#ifdef LOCAL
    #include "/home/notlinux/debug.h"
#else
    #define debug(x...) void(37)
#endif
vector < vector < int > > graph;
vector < int > par;
vector < int > vis;
vector < int > visdsu;
pair < int , int >  dfs(int node , int past){
    pair < int , int > ret = {node,1};
    for(auto itr : graph[node]){
        if(itr == past)continue;
        pair < int , int > dumb = dfs(itr,node);
        debug(itr,node,dumb);
        if(ret.second < (dumb.second+1)){
            ret = {dumb.first , dumb.second+1};
        }
    }
    return {ret.first , ret.second};
}
int longest_path(int st){
    debug(st);
    int node1 = dfs(st,0).first;
    debug(node1);
    int rams = dfs(node1,0).second;
    debug(st,rams);
    return rams;
}
int find(int a){
    if(par[a] == a)return a;    
    par[a] = find(par[a]);
    return par[a];
}
void merge(int a, int b){
    par[find(a)] = find(b);
}
void solve(){
    int n,m;cin >> n >> m;

    par.resize(n+1);
    iota(par.begin(),par.end(),0LL);
    graph.resize(n+1);
    vis.resize(n+1);
    visdsu.resize(n+1);

    while(m--){
        int a,b;cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
        merge(a,b);
    }
    int ans = 0;
    for(int i = 1;i<=n;i++){
        if(visdsu[find(i)] == 0){
            ans += longest_path(i);
            visdsu[find(i)] = 1;
        }
    }
    cout << ans << endl;
}
int32_t main(){
    ios_base::sync_with_stdio(0);cin.tie(nullptr);
    int tt=1;
    //cin >> tt;
    while(tt--)solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...