fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int gr[1000][1000];
  4. float rela[1000][1000];
  5. int main()
  6. {
  7. int i,j;
  8. float c=0.4,beta=0.1,lamda=0.2,ex1,ex2,ex3,ex4;
  9. int temp=1;
  10. int limi=5;
  11. int ct=0;
  12. float f[1000][1000];
  13. int siz[1000];
  14. //gr[1][3]=1;
  15. //gr[3][1]=1;
  16. //gr[1][4]=1;
  17. //gr[4][1]=1;
  18. //gr[2][4]=1;
  19. //gr[4][2]=1;
  20. //gr[3][5]=1;
  21. //gr[5][3]=1;
  22. //siz[1]=2;siz[2]=1;siz[3]=2,siz[4]=2,siz[5]=1;
  23. for(i=1;i<=limi;i++)
  24. {
  25. f[i][i]=0.1;
  26. }
  27. f[1][2]=1,f[1][3]=-1,f[1][4]=1,f[1][5]=-1;
  28. f[2][3]=1,f[2][4]=-1,f[2][5]=-1,f[3][4]=-1,f[3][5]=1,f[4][5]=1;
  29. f[2][1]=1,f[3][1]=-1,f[4][1]=1,f[5][1]=-1;
  30. f[3][2]=1,f[4][2]=-1,f[5][2]=-1,f[4][3]=-1,f[5][3]=1,f[5][4]=1;
  31. while(temp>0)
  32. {
  33. temp=0;
  34. ct++;
  35. for(i=1;i<=limi;i++)
  36. {
  37. for(j=1;j<=limi;j++)
  38. {
  39. if(j!=i)
  40. {
  41. ex1=f[i][i]*pow(lamda,siz[i])+f[i][j]*pow(lamda,siz[j]);
  42. ex2=f[i][i]*pow(lamda,siz[j])+f[i][j]*pow(lamda,siz[i]);
  43. ex3=((f[i][i]+f[i][j])*c)/(beta*(1-lamda));
  44. ex4=ex3*lamda;
  45. if(gr[i][j]==1)
  46. {
  47. if(ex1<ex4&&ex2<ex4)
  48. {
  49. gr[i][j]=0;
  50. gr[j][i]=0;
  51. siz[i]--;
  52. siz[j]--;
  53. temp++;
  54. }
  55. }
  56.  
  57. else
  58. {
  59. if(ex1>ex3&&ex2>ex3)
  60. {
  61. gr[i][j]=1;
  62. gr[j][i]=1;
  63. siz[i]++;
  64. siz[j]++;
  65. temp++;
  66. }
  67. }
  68. }
  69. }
  70. }
  71.  
  72. }
  73. printf("%d",ct);
  74. for(i=1;i<=limi;i++)
  75. {
  76. for(j=1;j<=limi;j++)
  77. {
  78. printf("%d ",gr[i][j]);
  79. }
  80. printf("\n");
  81. }
  82. return 0;
  83. }
Success #stdin #stdout 0s 26832KB
stdin
Standard input is empty
stdout
20 0 1 0 1 
0 0 0 1 1 
1 0 0 1 0 
0 1 1 0 0 
1 1 0 0 0