Submission #1330289

#TimeUsernameProblemLanguageResultExecution timeMemory
1330289secondaccountmaybeCijanobakterije (COCI21_cijanobakterije)C++20
70 / 70
27 ms13660 KiB
#include<bits/stdc++.h>
//designed by marss
#define ll long long
#define ss string
using namespace std;
ll n;
ll m;
vector<ll>adj[100005];
ll vis[100005];
ll dep[100005];
ll dfs(ll u,ll p)
{
  ll bt=0;
  for(ll v:adj[u])
  {
    if(v==p)
    {
      continue;
    }
    ll d=dfs(v,u)+1;
    if(d>bt)
    {
      bt=d;
    }
  }
  dep[u]=bt;
  return bt;
}
ll diam;
ll dfs2(ll u,ll p)
{
  ll b1=0;
  ll b2=0;
  for(ll v:adj[u])
  {
    if(v==p)
    {
      continue;
    }
    ll d=dfs2(v,u)+1;
    if(d>=b1)
    {
      b2=b1;
      b1=d;
    }
    else if(d>b2)
    {
      b2=d;
    }
  }
  if(b1+b2>diam)
  {
    diam=b1+b2;
  }
  return b1;
}
void f()
{
  cin>>n>>m;
  for(ll i=0;i<m;i++)
  {
    ll a;
    ll b;
    cin>>a>>b;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  fill(vis+1,vis+n+1,0);
  ll ans=0;
  ll cpm=0;
  for(ll i=1;i<=n;i++)
  {
    if(!vis[i])
    {
      cpm++;
      diam=0;
      vector<ll>cp;
      queue<ll>q;
      q.push(i);
      vis[i]=1;
      while(!q.empty())
      {
        ll u=q.front();
        q.pop();
        cp.push_back(u);
        for(ll v:adj[u])
        {
          if(!vis[v])
          {
            vis[v]=1;
            q.push(v);
          }
        }
      }
      diam=0;
      dfs2(i,-1);
      ans+=diam;
    }
  }
  ans+=cpm;
  cout<<ans<<endl;
}
int main()
{
  ios::sync_with_stdio(0);
	cin.tie(0);
	ll t=1;
	while(t--)
	{
	  f();
	}
	return 0;
}
#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...