Pagini recente » Cod sursa (job #683158) | Cod sursa (job #2597666) | Cod sursa (job #2225665) | Cod sursa (job #1685622) | Cod sursa (job #2909949)
#include <iostream>
#include <fstream>
#include <cmath>
#include <queue>
using namespace std;
void dfs(int** a,int n,bool v[],int k)
{
v[k]=true;
for(int i=0;i<n;++i)
{
if(!v[i] and a[k][i]==1)
{
v[i]=true;
dfs(a,n,v,i);
}
}
}
int main()
{
ifstream reader("dfs.in");
ofstream writer("dfs.out");
int n,m;
int h;
reader>>n>>m;
int** a = new int*[n];
for(int i=0;i<n;++i)
a[i] = new int[n];
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
a[i][j]=0;
int x,y;
for(int i=0;i<m;++i)
{
reader>>x>>y;
x--;
y--;
a[x][y]=a[y][x]=1;
}
bool v[n];
for(int i=0;i<n;++i) v[i]=false;
int cnt=0;
for(int i=0;i<n;++i)
{
if(!v[i])
{
dfs(a,n,v,i);
cnt++;
}
}
writer<<cnt;
return 0;
}