Cod sursa(job #210819)

Utilizator RobybrasovRobert Hangu Robybrasov Data 29 septembrie 2008 17:56:16
Problema Parcurgere DFS - componente conexe Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;

vector<int> L[100000];
vector<int>::iterator it;
queue<int> C;
int n,m,i,j,k,kont;
char E[100000];

void bf(int nod)
{

    while (!C.empty()) C.pop();
    C.push(nod);
    E[nod]=1;
    while (!C.empty())
    {
        for (it=L[C.front()].begin(); it!=L[C.front()].end(); it++)
            if (!E[*it]) C.push(*it);
        E[C.front()]=1;
        C.pop();
    }
}

int main()
{
    freopen("dfs.in","r",stdin);
    freopen("dfs.out","w",stdout);
    scanf("%d %d\n",&n,&m);
    for (i=1; i<=m; i++)
    {
        scanf("%d %d\n",&i,&j);
        L[i].push_back(j);
        L[j].push_back(i);
    }
    for (i=1; i<=n; i++) E[i]=0;
    kont=0;
    for (i=1; i<=n; i++)
        if (!E[i])
        {
            kont++;
            bf(i);
        }
    printf("%d",kont);
    return 0;
}