Cod sursa(job #2675630)

Utilizator AlexTacuTacu Alexandru AlexTacu Data 22 noiembrie 2020 09:54:51
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m,nr;
int viz[100005];

vector <int> L[100005];

void cit()
{
    in>>n>>m;
    for(;m--;)
    {
        int i,j;
        in>>i>>j;
        L[i].push_back(j);
        L[j].push_back(i);
    }
}

///Parcurgere normala
/*void test()
{
    for(int i=1;i<=n;i++)
        if(L[i].size())
    {
        out<<"Lista vecinilor lui "<<i<<" : ";
        for(int j=0;j<L[i].size();j++)
            out<<L[i][j]<<' ';
        out<<'\n';
    }
}*/

///Parcurgere Iterator
/*void test()
{
    for(int i=1;i<=n;i++)
        if(L[i].size())
    {
        out<<"Lista vecinilor lui "<<i<<" : ";
        for(vector <int> :: iterator it=L[i].begin();it!=L[i].end();it++)
            out<<*it<<' ';
        out<<'\n';
    }
}*/

void dfs(int i)
{
    viz[i]=1;
    for(vector <int> :: iterator j=L[i].begin();j!=L[i].end();j++)
        if(!viz[*j])
            dfs(*j);
}

void prg()
{
    for(int i=1;i<=n;i++)
    {
        if(!viz[i])
        {
            nr++;
            dfs(i);
        }
    }
}

void afis()
{
    out<<nr;
}

int main()
{
    cit();
    prg();
    afis();
    return 0;
}