Pagini recente » Cod sursa (job #1234986) | Cod sursa (job #3139649) | Cod sursa (job #1862410) | Cod sursa (job #811127) | Cod sursa (job #1705866)
#include <iostream>
#include <fstream>
#include <vector>
#define MAX 100000
unsigned int n, m, in, out;
bool visited[MAX];
std::vector< std::vector <int> > edges;
void dfs ( int root )
{
visited[root] = true;
for( int i = 0; i < edges[root].size(); ++i )
{
if( !visited[edges[root][i]] )
{
dfs(edges[root][i]);
}
}
}
int main( void )
{
freopen( "dfs.in", "r", stdin );
freopen( "dfs.out", "w", stdout );
std::cin >> n >> m;
edges.resize(n+1);
for( unsigned int i = 0; i < m; ++i )
{
std::cin >> in >> out;
edges[in].push_back(out);
edges[out].push_back(in);
}
int cnt = 0;
int curr = 1;
while(curr <= n)
{
if( !visited[curr] )
{
dfs(curr);
cnt ++;
}
curr++;
}
std::cout << cnt << "\n";
fclose( stdin );
fclose( stdout );
return 0;
}