fork download
  1. #include <stdio.h>
  2.  
  3. #define maxn 10000
  4.  
  5. int os[maxn+1],van_szulo[maxn+1],van_gyerek[maxn+1],szulo[maxn+1][2];
  6. int n;
  7.  
  8. void fun(int k){
  9.  
  10. if(!van_szulo[k])return;
  11. int i,u;
  12.  
  13. for(i=0;i<2;i++){
  14. u=szulo[k][i];
  15. if(!os[u]){os[u]=1;fun(u);}
  16. }
  17. }
  18.  
  19. void Beolvas(){
  20. int m,p,q1,q2;
  21. scanf("%d%d",&n,&m);
  22. for(int i=1;i<=n;i++){van_szulo[i]=0;van_gyerek[i]=0;}
  23. for (int i=0;i<m;i++){
  24. scanf("%d%d%d",&p,&q1,&q2);
  25. szulo[p][0]=q1;
  26. szulo[p][1]=q2;
  27. van_szulo[p]=1;
  28. van_gyerek[q1]=1;
  29. van_gyerek[q2]=1;
  30. }
  31. }
  32.  
  33. int main(void){
  34.  
  35. Beolvas();
  36. int cnt,i,u,kozos_os[maxn+1];
  37.  
  38. for(u=1;u<=n;u++)kozos_os[u]=1;
  39.  
  40. for(i=1;i<=n;i++)if(!van_gyerek[i]){
  41. for(u=1;u<=n;u++)os[u]=0;
  42. fun(i);
  43. for(u=1;u<=n;u++)kozos_os[u]&=os[u];
  44. }
  45.  
  46. cnt=0;
  47. for(u=1;u<=n;u++)cnt+=kozos_os[u];
  48.  
  49. printf("%d\n",cnt);
  50. cnt=0;for(u=1;u<=n;u++)if(kozos_os[u]){if(cnt)printf(" ");cnt++;printf("%d",u);}
  51. if(cnt)printf("\n");
  52.  
  53. return 0;
  54. }
  55.  
Success #stdin #stdout 0s 2352KB
stdin
20 13
4 3 8
5 8 9
6 11 12
7 13 15
3 1 16
8 2 17
9 16 10
11 16 10
12 17 10
13 16 14
15 17 14
16 18 19
17 19 20
stdout
5
16 17 18 19 20