Cod sursa(job #1112952)

Utilizator dascalutudorDascalu Tudor dascalutudor Data 20 februarie 2014 10:35:21
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
const int Nmax=100000;
const int Mmax=200000;
int n,m,d;
unsigned short mat[Nmax][Nmax/16];
void set(int a,int b)
{   unsigned short col,masca=32768,bit;
    col=b/16;
    bit=b%16;
    masca=masca>>bit;
    mat[a][col]=mat[a][col]|masca;


}
int get(int a,int b)
{   unsigned short col,masca=32768,bit;
    col=b/16;
    bit=bit%16;
    masca=masca>>bit;
    mat[a][col]=mat[a][col]&masca;

}
void dfs(int ns)
{   int i;
    set(0,ns);
    for(i=1;i<=n;i++)
    if(get(0,i)==0)
    if(get(ns,i)==1)
    {   dfs(i);

    }


    d++;
}
int main()
{
    int a,b,i;
    in>>n>>m;
    for(i=1;i<=m;i++)
    {   in>>a>>b;
        set(a,b);
        set(b,a);
    }
    for(i=1;i<=n;i++)

    {   if(get(0,i)==0)
        dfs(i);

    }
    out<<d/2;
    return 0;
}