Cod sursa(job #2516031)

Utilizator Rares31100Popa Rares Rares31100 Data 30 decembrie 2019 11:15:23
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("dfs.in");
ofstream out("dfs.out");

int n,m;
int vf[400001],urm[400001],last[200001],nr;
bitset <200001> viz;

void adauga(int nod,int vec)
{
    vf[++nr]=vec;
    urm[nr]=last[nod];
    last[nod]=nr;
}

void dfs(int nod,int from)
{
    viz[nod]=1;

    for(int k=last[nod];k;k=urm[k])
        if(!viz[ vf[k] ])
            dfs(vf[k],0);
}

int main()
{
    freopen("fisier.in","r",stdin);

    in>>n>>m;

    for(int i,j,k=1;k<=m;k++)
    {
        in>>i>>j;

        adauga(i,j);
        adauga(j,i);
    }

    int compConv=0;

    for(int i=1;i<=n;i++)
        if(!viz[i])
        {
            dfs(i,0);
            compConv++;
        }

    out<<compConv<<'\n';

    return 0;
}