Submission #1349619

#TimeUsernameProblemLanguageResultExecution timeMemory
1349619jumpCijanobakterije (COCI21_cijanobakterije)C++20
15 / 70
36 ms13552 KiB
#include <bits/stdc++.h>
#define int long long
std::vector<int> adj[100010];
bool visit[100010];
int tMax=0;
int dfs(int curr,int parr){
	if(visit[curr])return 0;
	else visit[curr]=true;
	int max1=0;
	int max2=0;
	int d=0;
	for(auto to:adj[curr]){
		int res=0;
		if(to==parr)continue;
		res=1+dfs(to,curr);
		d=std::max(d,res);
		if(res>max1){
			max2=max1;
			max1=res;
		}
		else if(res>max2)max2=res;
	}
	tMax=std::max(tMax,max1+max2-1);
	return std::max(d,(int)1);
}
signed main(){
	int n,m;
	std::cin >> n >> m;
	for(int i=0;i<m;i++){
		int a,b;
		std::cin >> a >> b;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
	int sum=0;
	for(int i=1;i<=n;i++){
		tMax=0;
		int res = dfs(i,i);
		//std::cout << tMax << ' ';
		sum+=tMax;
	}
	std::cout << sum;
}
#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...