Pagini recente » Cod sursa (job #2703542) | Cod sursa (job #1817413) | Cod sursa (job #3157633) | Cod sursa (job #433439) | Cod sursa (job #1154326)
#include <fstream>
#include <stack>
#include <vector>
#define MAX 100000
using namespace std;
int vect[MAX];
vector<vector<int>> adiacenta;
void dfs(int v){
stack<int> s;
s.push(v);
while(!s.empty()){
int x = s.top();
s.pop();
for(int i = 0; i < adiacenta[x].size(); i++){
int elem = adiacenta[x].at(i);
if(!vect[elem]){ vect[elem] = 1; s.push(elem); }
}
}
}
int main(){
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n, m, a, b, count = 0;
fin >> n >> m;
vector<int> v;
for(int i = 0; i < n; i++){
adiacenta.push_back(v);
}
for(int i = 0; i < m; i++){
fin >> a >> b;
adiacenta[--a].push_back(--b);
}
for(int i = 0; i < n ; i++){
if(!vect[i]){
dfs(i);
count++;
}
}
fout << count << "\n";
return 0;
}