MESSAGE - Truyền tin
Tác giả: khuc_tuan
Ngôn ngữ: C++
#include "iostream"
using namespace std;
int n,m;
bool a[888][888];
bool mark[888], visited[888];
void dfs(int i){
visited[i]=true;
for(int j=1;j<=n;++j) if(a[i][j] && !visited[j]){
dfs(j);
}
}
int main() {
int u,v,dem=0;
scanf("%d%d",&n,&m);
for(int i=0;i<m;++i){
scanf("%d%d",&u,&v);
a[u][v]=true;
}
for(int i=1;i<=n;++i) if(!visited[i]){
mark[i]=true;
dfs(i);
}
memset( visited, 0, sizeof(visited));
for(int i=n;i>=1;--i) if(mark[i] && !visited[i]){
++dem;
dfs(i);
}
cout << dem << endl;
return 0;
}