fork(1) download
  1. #include <cstdio>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. class krawedz
  9. {
  10. public:
  11. int poc,kon,waga;
  12. };
  13.  
  14. bool porownaj(krawedz k1, krawedz k2)
  15. {
  16. return k1.waga < k2.waga;
  17. }
  18.  
  19. int main()
  20. {
  21. int t, ilwierzcholkow, ilkraw, a, b, waga;
  22.  
  23. scanf("%d",&t);
  24. getchar();
  25. while(t--)
  26. {
  27. scanf("n=%d,m=%d",&ilwierzcholkow,&ilkraw);
  28.  
  29. krawedz *tab;
  30. tab=new krawedz[ilkraw];
  31.  
  32. for(int i=0;i<ilkraw;i++)
  33. {
  34. getchar();
  35. scanf("{%d,%d}%d",&a,&b,&waga);
  36. tab[i].poc=a;
  37. tab[i].kon=b;
  38. tab[i].waga=waga;
  39. }
  40. getchar();
  41.  
  42. sort(tab,(tab+ilkraw),porownaj);
  43.  
  44.  
  45. int *odw;
  46. odw=new int[ilwierzcholkow];
  47. for(int i = 0; i < ilwierzcholkow; i++)
  48. odw[i]=i;
  49.  
  50. int sumaodw=0;
  51. int sumawag=0;
  52. int aktpoc,aktkon,aktwaga;
  53. int bufor,bufor2;
  54.  
  55.  
  56. for(int i = 0; i < ilkraw; i++)
  57. {
  58. aktpoc=tab[i].poc;
  59. aktkon=tab[i].kon;
  60. aktwaga=tab[i].waga;
  61. if(odw[aktpoc]!=odw[aktkon])
  62. {
  63. sumawag+=aktwaga;
  64. sumaodw++;
  65. bufor=odw[aktkon];
  66. bufor2=odw[aktpoc];
  67. for(int j = 0; j < ilwierzcholkow; j++)
  68. {
  69. if(odw[j]==bufor)
  70. odw[j]=bufor2;
  71. }
  72. if(sumaodw==ilwierzcholkow-1)
  73. break;
  74. }
  75. }
  76. printf("%d\n",sumawag);
  77.  
  78. delete [] odw;
  79. delete [] tab;
  80. }
  81. return 0;
  82. }
  83.  
Success #stdin #stdout 0s 4236KB
stdin
12
n=6,m=9
{0,1}1 {0,5}3 {1,2}9 {1,3}7 {1,5}5 {2,3}8 {3,4}5 {3,5}2 {4,5}4
n=7,m=12
{0,1}2 {0,2}1 {0,3}2 {0,4}1 {0,5}2 {0,6}1 {1,2}4 {1,6}4 {2,3}3 {3,4}4 {4,5}6 {5,6}8
n=2,m=3 {0,1}2 {0,1}2 {1,0}1 n=4,m=6 {0,1}2 {0,2}2 {0,3}5 {1,2}10 {1,3}1 {2,3}8 n=4,m=4 {0,1}9 {0,2}1 {1,3}1 {2,3}8 n=4,m=4 {0,1}9 {0,2}1 {1,3}1 {2,3}9 n=4,m=5 {0,1}9 {0,2}1 {1,3}1 {2,3}8 {2,3}1 n=4,m=6 {0,1}9 {0,1}7 {0,2}1 {1,3}1 {2,3}8 {2,3}1 n=6,m=10 {0,1}10 {0,2}18 {2,3}3 {2,3}32 {1,4}8 {4,5}18 {3,5}5 {2,5}1 {1,5}8 {0,5}21 n=7,m=8 {0,1}100 {1,0}15 {2,3}4 {3,5}6 {5,6}8 {4,6}10 {0,4}2 {3,2}1 n=7,m=11 {0,1}5 {0,6}5 {1,2}3 {1,3}3 {1,6}5 {2,3}1 {3,4}5 {3,5}4 {3,6}3 {4,5}2 {5,6}5 n=7,m=11 {0,1}5 {0,6}5 {1,2}3 {1,3}3 {1,6}15 {2,3}1 {3,4}5 {3,5}4 {3,6}30 {4,5}2 {5,6}5
stdout
18
9
1
5
10
11
3
3
30
42
18
20