Cod sursa(job #2990334)

Utilizator AndreiStreheStreche Andrei Claudiu AndreiStrehe Data 7 martie 2023 19:49:55
Problema Parcurgere DFS - componente conexe Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

#define nmax 100001

vector <int> a[nmax];
queue <int> coada;

int viz[nmax];
int n,m,i,j,k1,k2,nr,nodcurent,vecin;

void dfs()
{
    int q=1;
    while(q<=n)
    {
        while(viz[q]!=0)
            q++;

        nr++;
        coada.push(q);
        while(coada.empty()==0)
        {
            nodcurent=coada.front();
            viz[nodcurent]=nr;
            for(int i=0;i<a[nodcurent].size();i++)
            {
                vecin=a[nodcurent][i];
                if(viz[vecin]==0)
                {
                    coada.push(vecin);
                    viz[vecin]=nr;
                }
            }
            coada.pop();
        }
    }
}

int main()
{
    f>>n>>m;

    for(i=1;i<=m;i++)
    {
        f>>k1>>k2;
        a[k1].push_back(k2);
    }

    dfs();
    g<<nr-1;

    return 0;
}