Pagini recente » Cod sursa (job #1678466) | Cod sursa (job #2754837) | Cod sursa (job #1682778) | Cod sursa (job #542274) | Cod sursa (job #688048)
Cod sursa(job #688048)
#include <cstdio>
#include <vector>
#include <stack>
#include <iostream>
using namespace std;
#define NMAX 50005
int N, M;
vector<int> neigh[NMAX];
vector<int> sortaret;
void read_file(){
int a,b;
FILE * f = fopen("dfs.in", "rt");
fscanf(f, "%d %d", &N, &M);
for(int i = 0; i < M; ++i){
fscanf(f, "%d %d", &a, &b);
neigh[a].push_back(b);
}
fclose(f);
}
vector<int> visited;
void dfs(int node){
visited[node] = 1;
for(unsigned i = 0; i < neigh[node].size(); ++i)
if(!visited[neigh[node][i]])
dfs(neigh[node][i]);
}
int nr_dfs = 0;
void dfs_1(){
for(int i = 1; i <= N; ++i)
if(!visited[i]){
++nr_dfs;
dfs(i);
}
}
void print_sol(){
FILE * f = fopen("dfs.out", "wt");
fprintf(f, "%d ", nr_dfs);
fclose(f);
}
int main(){
read_file();
visited.resize(N+1);
dfs_1();
print_sol();
return 0;
}