fork download
  1.  
  2. // C++ implementation of the approach
  3. #include <bits/stdc++.h>
  4. #define ll long long
  5. using namespace std;
  6.  
  7. // Driver code
  8. int main()
  9. {
  10. ll i,j,N,m,x,y;
  11.  
  12. cin >> N >> m;
  13. ll mul[N][N];
  14. ll hash[N],in[N],out[N];
  15. memset(in,0,sizeof(in));
  16. memset(out,0,sizeof(out));
  17. ll a[N][N];
  18. ll k = 2, res[N][N];
  19. for(i=0;i<N;++i)
  20. {
  21. for(j=0;j<N;++j)
  22. {
  23. a[i][j]=0;
  24. }
  25. }
  26. for(i=0;i<m;++i)
  27. {
  28. cin >> x >> y;
  29. --x;
  30. --y;
  31. a[x][y]=1;
  32. in[y]++;
  33. out[x]++;
  34. }
  35. ll ans=0;
  36. for(i=0;i<N;++i)
  37. {
  38. for(j=0;j<N;j++)
  39. {
  40. if(i==j || out[i]<3 || in[j]<3)
  41. continue;
  42. ll c=0;
  43. for(x=0;x<N;x++)
  44. {
  45. if(a[i][x] && a[x][j])
  46. c++;
  47.  
  48. }
  49. ll temp=c;
  50. if(c>=3)
  51. {
  52. ans+=((temp)*(temp-1)*(temp-2))/6;
  53. }
  54. }
  55. }
  56. /*for (ll i = 0; i < N; i++) {
  57. for (ll j = 0; j < N; j++) {
  58. mul[i][j] = 0;
  59. for (ll k = 0; k < N; k++)
  60. mul[i][j] += a[i][k] * a[k][j];
  61. }
  62. }
  63.  
  64. for (ll i = 0; i < N; i++)
  65. for (ll j = 0; j < N; j++)
  66. res[i][j] = mul[i][j]; */
  67.  
  68.  
  69.  
  70. /*ll ans=0;
  71. for(i=0;i<N;++i)
  72. {
  73. for(j=0;j<N;++j)
  74. {
  75. if(i!=j)
  76. {
  77. ans+=(a[i][j]*(hash[j]-1));
  78. }
  79. }
  80. }*/
  81. /* for(i=0;i<N;++i)
  82. {
  83. for(j=0;j<N;++j)
  84. {
  85. if(i==j)
  86. continue;
  87. if(res[i][j]>=3)
  88. {
  89. ll temp=res[i][j];
  90. ans+=((temp)*(temp-1)*(temp-2))/6;
  91. }
  92. }
  93. }*/
  94. cout << ans;
  95. return 0;
  96. }
  97.  
Success #stdin #stdout 0s 4512KB
stdin
5 12
1 3
1 4
1 5
2 3
2 4
2 5
3 1
3 2
4 1
4 2
5 2
5 4
stdout
1