Pagini recente » Cod sursa (job #2422074) | Cod sursa (job #419315) | Cod sursa (job #2064597) | Cod sursa (job #2330834) | Cod sursa (job #1112952)
#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;
}