fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define el "\n"
  4. #define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  5. #define __ROOT__ int main()
  6. #define fi first
  7. #define se second
  8. #define M 1000000007
  9. #define MAXN 10001
  10. #define GIOIHAN 1000001
  11. #define BLOCK_SIZE 425
  12. #define MAX_NODE 1001001
  13. #define ALPHA_SIZE 26
  14. #define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end()); // dùng để nén sort mảng compare
  15. using namespace std;
  16. ll n, m, mi, ma ,ans;
  17. ll sz[MAXN], par[MAXN] ;
  18. struct Edge {
  19. ll u, v, w ;
  20. bool operator < (const Edge &other) const {
  21. return w< other.w;
  22. }
  23. } edge[MAXN];
  24. ll find_set(ll a ) {
  25. if(par[a] == a) return a;
  26. return par[a] =find_set(par[a]);
  27. }
  28. void uninon_set(ll a, ll b) {
  29. a = find_set(a) ;
  30. b = find_set(b);
  31. if(a== b) return ;
  32. if(sz[a] < sz[b]) swap(a,b) ;
  33. sz[a] += sz[b] ;
  34. par[b]= a;
  35. }
  36. void init() {
  37. cin>>n >> m ;
  38. for(ll i = 0 ; i < m ; i ++ ) {
  39. cin>>edge[i].u >> edge[i].v >> edge[i].w;
  40. }
  41. sort(edge, edge+ m );
  42. // for(ll i = 0 ; i < m ; i ++ ){
  43. // cout<<edge[i].u<<" " << edge[i].v<< " "<< edge[i].w<<el ;
  44. // }
  45. }
  46. void restart() {
  47. for(ll i = 0 ; i <= n ; i ++ ) par[i] = i, sz[i] = 1;
  48. }
  49. ll check(ll l) {
  50. restart() ;
  51. ll cnt = 0; mi = LONG_MAX, ma=LONG_MIN ;
  52. for(ll i = l ; i <m ; i ++ ) {
  53. ll x= find_set(edge[i].u);
  54. ll y= find_set(edge[i].v);
  55. if(x != y ) {
  56. cnt++ ;
  57. uninon_set(x, y) ;
  58. ma= max(edge[i].w,ma);
  59. mi = min(edge[i].w,mi);
  60. if(cnt == n- 1 ) return ma-mi;
  61. }
  62. }
  63. return LONG_MAX ;
  64. }
  65. void solve() {
  66. ans= LONG_MAX ;
  67. for(ll i = 0 ; i < m ; i ++ ) {
  68. ans = min(check(i) , ans );
  69. // cout<< check(i)<<el;
  70. }
  71. if(ans == LONG_MAX) {
  72. cout<<"NOT FOUND" ;
  73. } else cout<<ans;
  74. }
  75.  
  76. __ROOT__ {
  77. fast;
  78. init();
  79. solve();
  80. }
  81.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
NOT FOUND