Cod sursa(job #825188)

Utilizator SteveStefan Eniceicu Steve Data 27 noiembrie 2012 19:57:59
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <deque>
#include <stack>
#include <bitset>
#include <list>
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define mp(a,b) make_pair (a, b)
#define ll long long
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)

using namespace std;

int N, M;
vector <int> muchii[100010];
int lg[100010];
bitset <100010> visited;

void Citire ()
{
    ifstream fin ("dfs.in");
    fin >> N >> M;
    for (int i = 0, a, b; i < M; i++)
    {
        fin >> a >> b;
        muchii[a].pb (b);
        lg[a]++;
        muchii[b].pb (a);
        lg[b]++;
    }
    fin.close ();
}

void DFS (int nod)
{
    visited[nod] = 1;
    for (int i = 0; i < lg[nod]; i++)
    {
        if (!visited[muchii[nod][i]]) DFS (muchii[nod][i]);
    }
}

int Business ()
{
    int cnt = 0;
    for (int i = 1; i <= N; i++)
        if (!visited[i])
        {
            cnt++;
            DFS (i);
        }
    return cnt;
}

void Scriere ()
{
    ofstream fout ("dfs.out");
    fout << Business ();
    fout.close ();
}

int main ()
{
    Citire ();
    Scriere ();
    return 0;
}