fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<int> up[350000];
  4. struct node{
  5. int a,b;
  6. }arr[350000];
  7. int n,m,ans,t[350000];
  8. bool v[350000];
  9. void gcd(int k){
  10. for(int i=0;i<up[k].size();i++){
  11. if(v[up[k][i]]==1){
  12. continue;
  13. }
  14. v[up[k][i]]=1;
  15. t[up[k][i]]++;
  16. gcd(up[k][i]);
  17.  
  18. }
  19.  
  20. }
  21. int main(){
  22. t[1]++;
  23. cin>>n>>m;
  24. for(int i=1;i<=m;i++){
  25. cin>>arr[i].a>>arr[i].b;
  26. up[arr[i].a].push_back(arr[i].b);
  27. }
  28. gcd(1);
  29. for(int i=1;i<=n;i++){
  30. if(t[i]>=1){
  31. ans++;
  32. }
  33. }
  34. cout<<ans;
  35. }
Success #stdin #stdout 0.01s 14028KB
stdin
7 8
2 6
2 5
3 6
1 6
1 2
5 6
2 3
3 7
stdout
6