fork download
  1. #include<bits/stdc++.h>
  2. int inf =1e9;
  3. int main()
  4. {
  5. int from, to,cnt=0,m[101][101],x,y,t=0,maxNode=0;
  6.  
  7. while(scanf("%d %d",&from,&to)==2)
  8. {
  9. if(from>maxNode)
  10. maxNode=from;
  11. if (to>maxNode)
  12. maxNode=to;
  13. if(from==0 && to==0 && cnt==0)
  14. {
  15. return 0;
  16. }
  17. if(from==0 && to==0 && cnt>0)
  18. {
  19. cnt=0;
  20. t++;
  21.  
  22. for(int k=1;k<=maxNode;k++)
  23. for(int i=1;i<=maxNode;i++)
  24. for(int j=1;j<=maxNode;j++)
  25. {
  26. if(m[i][j]>(m[i][k]+m[k][j]))
  27. {
  28. m[i][j]=m[i][k]+m[k][j];
  29. }
  30.  
  31. }
  32. int total_dis=0;
  33. int total_pair=0;
  34. for(int i=1;i<=maxNode;i++)
  35. {
  36. for(int j=1;j<=maxNode;j++)
  37. {
  38. if(m[i][j]!=inf)
  39. {
  40. if(i!=j){
  41. total_dis+=m[i][j];
  42.  
  43. total_pair++;
  44. }
  45. }
  46. }
  47. }
  48.  
  49. printf("Case %d: average length between pages = %.3lf clicks\n",t,((double)total_dis/(double)total_pair));
  50. maxNode=0;
  51. continue;
  52. }
  53.  
  54. if(cnt==0)
  55. {
  56. for(int i=1;i<=100;i++)
  57. {
  58. for(int j=1;j<=100;j++)
  59. {
  60. m[i][j]=inf;
  61. }
  62. }
  63. }
  64. cnt++;
  65. m[from][to]=1;
  66.  
  67. }
  68. }
  69.  
  70.  
Success #stdin #stdout 0s 15240KB
stdin
1 2 2 4 1 3 3 1 4 3 0 0
1 2 1 4 4 2 2 7 7 1 0 0
0 0
stdout
Case 1: average length between pages = 1.833 clicks
Case 2: average length between pages = 1.750 clicks