fork download
  1. #include<iostream>
  2. using namespace std;
  3. #include<math.h>
  4.  
  5. long int graph[1000][1000];
  6. long int graph2[1000][1000];
  7. int stack[1000];
  8. int s1;
  9. int v;
  10.  
  11. int n=0;
  12.  
  13. void path(int x, int y, long int k)
  14. {
  15. int flag,flag2;
  16. long int t;
  17. if(x==y)
  18. {
  19. if(graph2[stack[0]][y]<k)
  20. graph2[stack[0]][y]=k;
  21. return;
  22. }
  23.  
  24. else
  25. {stack[s1]=x;
  26. s1++;
  27. flag=0;
  28. for(int d=0;d<v;d++)
  29. {
  30. if(graph[x][d]!=-1)
  31. {flag2=0;
  32. for(int f=0;f<s1;f++)
  33. {
  34. if(stack[f]==d)
  35. flag2=1;
  36. }
  37. if(flag2==0)
  38. {
  39. if((graph[x][d]<k)||(k==-1))
  40. {
  41. t=graph[x][d];
  42. path(d,y,t);
  43.  
  44. }
  45. else
  46. path(d,y,k);
  47. }
  48. }
  49. }
  50. s1--;
  51.  
  52. }
  53.  
  54. return;
  55. }
  56.  
  57.  
  58.  
  59.  
  60. int main()
  61. {
  62. int a,b ,c,d,i,j;
  63. int x,y;
  64. long int z;
  65. int e,e1;
  66. int s1=0;
  67. long int n=-1;
  68. cin>>v>>e;
  69. e1=e;
  70. /*initialise*/
  71. for(i=0;i<v;i++)
  72. {
  73. for(j=0;j<v;j++)
  74. graph[i][j]=-1;
  75. }
  76. /*input*/
  77. while(e1--)
  78. {
  79. cin>>x>>y>>z;
  80. graph[x][y]=z;
  81. graph[y][x]=z;
  82. }
  83. /* for(i=0;i<v;i++)
  84.   {
  85.   for(j=0;j<v;j++)
  86.   cout<<graph[i][j]<<"\t";
  87.   cout<<endl;
  88.   }*/
  89.  
  90.  
  91. for(i=0;i<v;i++)
  92. {
  93. for(j=0;j<v;j++)
  94. {
  95. if(i==j)
  96. graph2[i][j]=0;
  97. else
  98. {
  99. graph2[i][j]=-1;
  100. path(i,j,n);
  101. }
  102. }
  103. }
  104. for(i=0;i<v;i++)
  105. {
  106. for(j=0;j<v;j++)
  107. cout<<graph2[i][j]<<"\t";
  108. cout<<endl;
  109. }
  110. //system("pause");
  111. return 0;
  112. }
  113.  
Success #stdin #stdout 0.02s 10544KB
stdin
4
0 2 1 3
1 0 4 5
3 1 0 3
1 1 1 0
4
0 2 1
0 2 2
3 1 2
3 0 1
stdout
0	-1	-1	-1	
-1	0	-1	-1	
-1	-1	0	-1	
-1	-1	-1	0