Cod sursa(job #899265)

Utilizator ctraulChicinas T. Raul ctraul Data 28 februarie 2013 13:37:53
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
using namespace std;
#include <stdio.h>
#include <vector>
#define componenta_conexa D
vector <int> lis[100001];
void DFS(int nod);
int n,m,freq[100001],D;
int main()
{
    freopen("dfs.in","r",stdin);
    freopen("dfs.out","w",stdout);
    scanf("%d%d", &n, &m);
    for(int i=1,S,E;i<=m;i++)
    {
        scanf("%d%d",&S,&E);
        lis[S].push_back(E);
        lis[E].push_back(S);
    }
    for(int i=1;i<=n;i++)
    {
        if(freq[i]==0)
        {
            componenta_conexa++;
            DFS(i);
        }
    }
    printf("%d",componenta_conexa);
}

void DFS(int nod)
{
    freq[nod]++;
    for(int i=0;i<lis[nod].size();i++)
        if(freq[lis[nod][i]]==0)
            DFS(lis[nod][i]);
}