Pagini recente » Cod sursa (job #217819) | Cod sursa (job #1736213) | Cod sursa (job #1308712) | Cod sursa (job #2358852) | Cod sursa (job #2413366)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ( "dfs.in" );
ofstream out ( "dfs.out" );
int n, m, nr;
bool *viz;
vector<vector<int>> a;
void dfs( int x )
{
int i, y;
viz[x] = true;
for(i = 0; i < a[x].size(); i++)
{
y = a[x][i];
if( !viz[y] )
dfs( y );
}
}
int main ( ){
int i, x, y;
in >> n >> m;
viz = new bool [n + 2];
for ( i = 0; i <= n; i++ ){
a.push_back ( vector<int> ());
viz[i] = false;
}
for ( i = 0; i < m ; i++ ){
in >> x >> y;
a[x].push_back(y);
}
for ( i = 1; i <= n; i++ )
if ( not viz[i] ){
dfs ( i );
nr++;
}
out << nr;
in.close();
out.close();
delete viz;
return 0;
}