Cod sursa(job #932310)

Utilizator SPDionisSpinei Dionis SPDionis Data 28 martie 2013 20:28:07
Problema Parcurgere DFS - componente conexe Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#include <set>
using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");

int n,m;

struct nod
{
    vector<int> v;
} a[100010];



int main()
{
    in >> n >> m;
    for (int i = 0; i < m; ++i)
    {
        int x,y; in >> x >> y;
        a[x].v.push_back(y);
        a[y].v.push_back(x);
    }

    set<int> noduri;
    for (int i = 1; i <= n; ++i)
        noduri.insert(i);

    deque<int> ndeviz;
    int k = 0;
    while (noduri.size())
    {
        if (!ndeviz.size()){ ++k; ndeviz.push_back( *(noduri.begin()) ); }
        int nod = ndeviz.front();
        ndeviz.pop_front();
        noduri.erase( noduri.find(nod) );
        for (int i = 0; i < a[nod].v.size(); ++i)
            if( noduri.find(a[nod].v[i]) != noduri.end() ) ndeviz.push_back(a[nod].v[i]);
    }
    out << k;
    return 0;
}