Cod sursa(job #1039538)

Utilizator PaaaulicaPaulica Paaaulica Data 23 noiembrie 2013 11:37:28
Problema Parcurgere DFS - componente conexe Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
    #include <iostream>
    #include <stdio.h>
    #include <vector>

    using namespace std;

    vector <int> a[10000],rez[10000];
    int v[100],  vnr;

    int n,m,sol;

    bool AreMuchie(int x,vector<int> aux)
    {



        for(vector<int>::iterator i=aux.begin() ; i<aux.end(); i++)
            if(x==*i)
                return 1;

        return 0;
    }

    void graf(int nod)
    {

        if(AreMuchie(nod,rez[sol]))
        {

        }
        else
        {

            rez[sol].push_back(nod);
            v[nod]=1;
        }



        for(int i=1; i<=n  ; i++)
        {
            if(AreMuchie( i,   a[nod]) &&  !AreMuchie(i,rez[sol] ))
            {


                rez[sol].push_back(i);
                v[i]=1;


                graf(i);
            }
        }
    }
    int main()
    {
        freopen("dfs.in","r",stdin);
        freopen("dfs.out","w",stdout);
        cin>>n>>m;
        for(int i=1; i<=m; i++)
        {
            int x,y;
            cin>>x>>y;
            a[x].push_back(y);
            a[y].push_back(x);


        }
        sol=0;





        sol++;
        graf(1);
        for(int i=2; i<=n; i++)
        {
            if(!v[i])
            {
                sol++;
                graf(i);
            }
        }




        cout<<sol;


        return 0;
    }