QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#708312#6560. Broken Minimum Spanning Treetassei903AC ✓20ms4072kbC++232.5kb2024-11-03 21:19:462024-11-03 21:19:47

Judging History

你现在查看的是最新测评结果

  • [2024-11-03 21:19:47]
  • 评测
  • 测评结果:AC
  • 用时:20ms
  • 内存:4072kb
  • [2024-11-03 21:19:46]
  • 提交

answer


#include <bits/stdc++.h>
#include <bits/extc++.h> 
using namespace std;
#define sz(x) (int)(x).size()
#define rep(i, l, r) for (int i = l; i < (r); i++)
#define all(x) begin(x), end(x)

using ll = long long;
using vi = vector<int>;

using pii = pair<int, int>;

struct edge {
    int u, v, w, i;
};

struct DSU {
    int n;
    vector<int> par;

    DSU(int n) : n(n) {
        par = vector<int>(n, -1);
    }


    int leader(int x) {
        if (par[x] < 0) return x;
        return par[x] = leader(par[x]);
    }

    bool same(int x, int y) {
        return leader(x) == leader(y);
    }

    void merge(int x, int y) {
        x = leader(x);
        y = leader(y);
        if (x == y)return;

        par[x] += par[y];
        par[y] = x;
    }
};


int main() {
    int n, m;cin >> n >> m;
    vector<edge> ed(m);
    int t = 0;
    vector<vector<pii>> g(n);
    for (auto &[u, v, w, i] : ed) {
        cin >> u >> v >> w;
        i = t++;
        u--;
        v--;
        g[u].emplace_back(v, i);
        g[v].emplace_back(u, i);
    }

    vector<int> idx(m); iota(all(idx), 0);
    sort(all(idx), [&](int i, int j){
        if (ed[i].w == ed[j].w)return i < j;
        else return ed[i].w < ed[j].w;
    });
    
    vector<int> flag(m, 0);
    DSU dsu(n);
    for (auto i: idx) {
        // cout << ed[i].u << " " << ed[i].v << endl;
        if (dsu.same(ed[i].u, ed[i].v))continue;
        dsu.merge(ed[i].u, ed[i].v);
        flag[i] = 1;
    }
    vector<int> now(m, 0);rep(i, 0, n-1)now[i] = 1;
    // rep(i, 0, m) cout << flag[i] << " ";cout << endl;
    auto dfs = [&](auto self, int v, int p, int target)-> int {
        // cout << v+1 << endl;
        if (target == v) return -1;
        for (auto [u, i]: g[v]) {
            if (now[i] ^ 1)continue;
            if (u == p)continue;
            int x = self(self, u, v, target);
            // cout <<v+1 << " x:" << x << endl;
            if (x >= 0) return x;
            if (x == -1 && flag[i] == 0) return i;
            else if (x == -1) return -1;
        }
        return -2;
    };
    vector<pii> ans;
    rep(i, n-1, m) {
        if (flag[i] ^ 1)continue;
        int x = dfs(dfs, ed[i].u, -1, ed[i].v);
        // cout << x << endl;
        now[x] = 0;
        now[i] = 1;
        ans.emplace_back(i, x);
    }
    cout << sz(ans) << endl;
    for (auto [x, y]: ans) {
        cout << x+1 << " " << y+1 << endl;
    }

    

}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3600kb

input:

4 4
1 2 10
2 3 3
3 4 1
1 4 4

output:

1
4 1

result:

ok correct!

Test #2:

score: 0
Accepted
time: 0ms
memory: 3544kb

input:

6 8
1 2 10
2 3 10
3 4 10
4 5 10
5 6 10
6 1 10
1 3 1
4 6 1

output:

2
7 2
8 5

result:

ok correct!

Test #3:

score: 0
Accepted
time: 2ms
memory: 3760kb

input:

2000 1999
1262 1505 968661582
323 1681 787089412
1132 129 88786681
1909 587 762050278
979 1371 230688681
1686 521 980519364
975 191 887826021
869 461 899130441
1433 259 961154249
1718 547 721696188
1254 1042 458319755
1779 267 85751052
1170 813 283230029
309 20 971682908
224 417 255325364
1084 986 7...

output:

0

result:

ok correct!

Test #4:

score: 0
Accepted
time: 2ms
memory: 3796kb

input:

1999 1998
1757 1820 444157563
1757 395 754598547
1757 1571 432619009
1757 1009 456234067
1757 824 935569725
1757 1698 476714469
1757 1420 901765343
1757 1175 225295107
1757 1512 721959801
1757 1585 955067704
1757 1739 635181418
1757 1686 891225461
1757 84 132683224
1757 1696 48915557
1757 1623 42602...

output:

0

result:

ok correct!

Test #5:

score: 0
Accepted
time: 2ms
memory: 3700kb

input:

1999 1998
1345 647 232183406
40 837 279910457
819 857 137486924
255 1378 517489941
827 1565 894953662
1556 1545 898170464
965 877 72248541
1631 298 635713424
895 197 366305735
966 1160 515776809
1870 1638 220711661
1736 220 716014108
1914 1609 759121968
1293 153 272816132
1936 1433 263859075
985 460...

output:

0

result:

ok correct!

Test #6:

score: 0
Accepted
time: 1ms
memory: 3660kb

input:

500 998
105 1 1
105 2 1
105 3 1
105 4 1
105 5 1
105 6 1
105 7 1
105 8 1
105 9 1
105 10 1
105 11 1
105 12 1
105 13 1
105 14 1
105 15 1
105 16 1
105 17 1
105 18 1
105 19 1
105 20 1
105 21 1
105 22 1
105 23 1
105 24 1
105 25 1
105 26 1
105 27 1
105 28 1
105 29 1
105 30 1
105 31 1
105 32 1
105 33 1
105 ...

output:

0

result:

ok correct!

Test #7:

score: 0
Accepted
time: 1ms
memory: 3864kb

input:

500 998
364 1 1
364 2 1
364 3 1
364 4 1
364 5 1
364 6 1
364 7 1
364 8 1
364 9 1
364 10 1
364 11 1
364 12 1
364 13 1
364 14 1
364 15 1
364 16 1
364 17 1
364 18 1
364 19 1
364 20 1
364 21 1
364 22 1
364 23 1
364 24 1
364 25 1
364 26 1
364 27 1
364 28 1
364 29 1
364 30 1
364 31 1
364 32 1
364 33 1
364 ...

output:

0

result:

ok correct!

Test #8:

score: 0
Accepted
time: 0ms
memory: 3816kb

input:

500 998
86 1 2
86 2 2
86 3 2
86 4 2
86 5 2
86 6 2
86 7 2
86 8 2
86 9 2
86 10 2
86 11 2
86 12 2
86 13 2
86 14 2
86 15 2
86 16 2
86 17 2
86 18 2
86 19 2
86 20 2
86 21 2
86 22 2
86 23 2
86 24 2
86 25 2
86 26 2
86 27 2
86 28 2
86 29 2
86 30 2
86 31 2
86 32 2
86 33 2
86 34 2
86 35 2
86 36 2
86 37 2
86 38...

output:

499
500 1
501 2
502 3
503 4
504 5
505 6
506 7
507 8
508 9
509 10
510 11
511 12
512 13
513 14
514 15
515 16
516 17
517 18
518 19
519 20
520 21
521 22
522 23
523 24
524 25
525 26
526 27
527 28
528 29
529 30
530 31
531 32
532 33
533 34
534 35
535 36
536 37
537 38
538 39
539 40
540 41
541 42
542 43
543 ...

result:

ok correct!

Test #9:

score: 0
Accepted
time: 1ms
memory: 3872kb

input:

500 998
198 227 1
227 315 1
315 426 1
426 400 1
400 61 1
61 143 1
143 487 1
487 65 1
65 415 1
415 434 1
434 327 1
327 190 1
190 411 1
411 51 1
51 91 1
91 364 1
364 185 1
185 393 1
393 89 1
89 53 1
53 66 1
66 69 1
69 13 1
13 5 1
5 45 1
45 314 1
314 291 1
291 490 1
490 92 1
92 175 1
175 458 1
458 218 ...

output:

0

result:

ok correct!

Test #10:

score: 0
Accepted
time: 1ms
memory: 3808kb

input:

500 998
360 250 1
250 71 1
71 170 1
170 492 1
492 419 1
419 145 1
145 188 1
188 433 1
433 186 1
186 161 1
161 398 1
398 19 1
19 479 1
479 401 1
401 40 1
40 176 1
176 212 1
212 353 1
353 290 1
290 43 1
43 322 1
322 447 1
447 47 1
47 468 1
468 456 1
456 343 1
343 339 1
339 52 1
52 251 1
251 130 1
130 ...

output:

0

result:

ok correct!

Test #11:

score: 0
Accepted
time: 0ms
memory: 3904kb

input:

500 998
369 45 2
45 364 2
364 300 2
300 195 2
195 291 2
291 390 2
390 122 2
122 331 2
331 408 2
408 91 2
91 298 2
298 116 2
116 301 2
301 287 2
287 338 2
338 4 2
4 79 2
79 177 2
177 387 2
387 125 2
125 477 2
477 11 2
11 284 2
284 102 2
102 305 2
305 395 2
395 112 2
112 280 2
280 294 2
294 232 2
232 ...

output:

499
500 10
501 182
502 483
503 428
504 484
505 250
506 172
507 116
508 180
509 82
510 275
511 178
512 148
513 13
514 380
515 54
516 393
517 382
518 53
519 72
520 225
521 493
522 279
523 490
524 216
525 386
526 18
527 122
528 358
529 136
530 230
531 48
532 344
533 315
534 104
535 150
536 151
537 205
...

result:

ok correct!

Test #12:

score: 0
Accepted
time: 1ms
memory: 3648kb

input:

500 998
298 314 1
467 314 1
9 314 1
345 298 1
497 298 1
315 467 1
147 345 1
154 345 1
16 345 1
226 497 1
406 147 1
204 298 1
351 406 1
432 314 1
274 406 1
340 274 1
395 226 1
173 315 1
180 274 1
207 9 1
495 204 1
213 298 1
413 207 1
450 204 1
25 147 1
161 497 1
231 180 1
175 467 1
199 231 1
454 231 ...

output:

0

result:

ok correct!

Test #13:

score: 0
Accepted
time: 0ms
memory: 3648kb

input:

500 998
42 349 1
256 42 1
202 349 1
23 42 1
252 42 1
175 42 1
67 252 1
302 67 1
337 252 1
495 252 1
14 349 1
347 202 1
494 495 1
206 347 1
1 302 1
434 349 1
475 206 1
243 206 1
135 494 1
179 495 1
226 202 1
490 226 1
481 1 1
165 243 1
114 495 1
463 256 1
282 114 1
411 202 1
25 1 1
163 67 1
388 179 1...

output:

0

result:

ok correct!

Test #14:

score: 0
Accepted
time: 0ms
memory: 3692kb

input:

500 998
493 328 2
444 493 2
356 328 2
374 328 2
135 328 2
292 444 2
323 135 2
296 328 2
407 493 2
207 374 2
118 296 2
490 135 2
357 323 2
464 292 2
279 323 2
183 493 2
81 356 2
367 407 2
235 356 2
354 292 2
479 464 2
214 118 2
406 357 2
164 279 2
230 356 2
380 164 2
399 135 2
344 81 2
190 490 2
422 ...

output:

499
500 1
501 2
502 3
503 4
504 5
505 6
506 7
507 8
508 9
509 10
510 11
511 12
512 13
513 14
514 15
515 16
516 17
517 18
518 19
519 20
520 21
521 22
522 23
523 24
524 25
525 26
526 27
527 28
528 29
529 30
530 31
531 32
532 33
533 34
534 35
535 36
536 37
537 38
538 39
539 40
540 41
541 42
542 43
543 ...

result:

ok correct!

Test #15:

score: 0
Accepted
time: 0ms
memory: 3584kb

input:

10 20
3 5 132699872
7 3 667475629
10 7 829222331
1 7 265644695
4 3 226461311
2 7 720348681
6 10 703702759
8 4 153004599
9 10 646988804
1 9 45480111
2 4 784301144
1 9 628023542
7 8 449200681
9 2 240371799
3 2 420603433
3 9 838425734
4 6 623790050
1 7 513829155
1 9 883183260
10 3 422484921

output:

5
10 9
14 6
15 2
17 7
20 3

result:

ok correct!

Test #16:

score: 0
Accepted
time: 1ms
memory: 3620kb

input:

100 200
69 52 334673965
90 52 598347660
62 52 671196898
38 90 561150605
97 69 844448459
25 90 865251171
41 38 773653441
49 97 813975775
99 41 996226580
54 69 583281785
34 38 385173507
56 97 285801905
17 38 946715780
67 17 139770128
43 97 890101081
68 90 370458274
74 17 698466900
6 67 19950896
58 56 ...

output:

50
103 39
104 65
107 10
108 64
109 8
112 47
115 74
116 69
120 2
121 15
125 92
126 80
127 25
131 36
132 21
134 9
135 5
136 87
137 24
138 16
145 83
148 28
150 41
152 89
153 7
156 75
157 60
160 61
163 77
166 19
168 44
170 96
171 35
174 49
176 3
177 4
180 45
181 81
182 58
183 17
184 20
185 95
186 23
189...

result:

ok correct!

Test #17:

score: 0
Accepted
time: 20ms
memory: 3796kb

input:

2000 3000
1279 1465 434468566
1062 1279 993799662
1494 1465 490141333
529 1279 207090506
119 1279 494706603
1830 1062 798435525
1307 1279 501822892
362 119 776215279
1330 1494 64095945
1823 529 302809447
1882 529 298925061
1394 529 639185117
1852 362 939130818
752 529 845078929
104 752 853251112
126...

output:

617
2000 124
2001 1046
2002 31
2003 1975
2008 773
2009 1538
2011 95
2014 6
2016 133
2017 1992
2018 963
2019 100
2021 147
2023 161
2025 977
2026 401
2027 176
2029 627
2030 13
2031 87
2033 58
2034 567
2037 572
2038 116
2040 78
2041 16
2043 272
2045 1184
2046 1643
2047 368
2048 8
2049 15
2050 560
2051 ...

result:

ok correct!

Test #18:

score: 0
Accepted
time: 19ms
memory: 4036kb

input:

2000 3000
285 1808 694643588
224 285 690510187
908 1808 663193044
486 224 663712643
324 908 165916788
1403 285 948845412
1310 324 12561437
1948 285 642808470
883 1310 358793640
396 1808 869731392
1276 1310 621641177
203 1948 231802320
1547 1276 39692873
830 285 636658714
1357 1948 177401445
303 203 ...

output:

613
2000 19
2001 1110
2003 362
2004 636
2006 16
2007 1131
2008 478
2009 50
2010 41
2011 1674
2015 629
2016 181
2017 1522
2018 950
2019 1927
2021 1325
2022 24
2023 463
2024 167
2027 17
2028 315
2029 31
2031 527
2034 912
2035 341
2037 1351
2039 1255
2042 376
2043 928
2045 854
2048 400
2049 1647
2050 9...

result:

ok correct!

Test #19:

score: 0
Accepted
time: 19ms
memory: 4000kb

input:

2000 3000
1966 1337 886061561
1564 1966 321739163
878 1966 383102115
15 1337 355428698
392 15 389233814
1520 1337 163779508
1349 392 323493610
1126 1349 804548395
1739 1337 508691040
956 1564 924027693
674 1126 845489957
1749 1739 290423046
1926 1966 647294733
456 1966 656155212
1746 1564 106274278
...

output:

603
2000 1382
2001 373
2002 1090
2005 228
2006 348
2007 1238
2008 86
2010 1878
2011 106
2012 586
2014 380
2016 1424
2017 133
2019 1140
2021 162
2022 10
2023 167
2024 590
2025 1552
2026 144
2027 1923
2028 1859
2031 525
2032 196
2033 9
2035 265
2037 77
2039 80
2041 48
2042 11
2044 272
2046 1298
2047 9...

result:

ok correct!

Test #20:

score: 0
Accepted
time: 20ms
memory: 3732kb

input:

2000 3000
487 1828 891595258
848 1828 70120465
399 1828 222566316
2000 1828 390057442
589 487 561090448
1878 399 923567050
1547 848 289163461
724 1828 712597149
856 487 612088317
1932 848 498697630
177 1932 225589816
1541 856 745128386
1229 399 501103338
40 1828 283700123
1206 1878 364593718
519 40 ...

output:

624
2000 1332
2002 1296
2003 563
2007 1878
2008 1383
2010 717
2011 633
2013 608
2014 43
2017 1132
2018 1264
2019 178
2020 805
2022 1681
2023 459
2024 1628
2025 1715
2026 1505
2027 1661
2028 1427
2031 501
2032 9
2034 1905
2035 266
2039 1446
2040 12
2042 577
2045 1514
2046 5
2047 1012
2048 1323
2051 6...

result:

ok correct!

Test #21:

score: 0
Accepted
time: 20ms
memory: 3992kb

input:

2000 3000
28 909 901469954
874 909 630039044
1150 874 369081856
180 1150 796073964
199 874 607566492
1260 1150 672891947
233 180 524809142
390 909 531859461
122 874 275924720
457 1260 521407422
872 28 975420599
497 872 901775699
885 390 839588422
1242 199 380484388
1598 28 823494399
202 885 41696165...

output:

618
2000 369
2004 201
2005 450
2006 1427
2007 134
2008 1765
2009 1271
2010 613
2013 409
2016 1644
2018 38
2019 12
2020 750
2025 1811
2026 368
2027 7
2029 144
2030 618
2031 56
2033 437
2035 1700
2037 502
2038 563
2039 285
2040 27
2043 116
2044 823
2047 324
2050 197
2051 256
2052 1658
2053 41
2054 110...

result:

ok correct!

Test #22:

score: 0
Accepted
time: 1ms
memory: 3668kb

input:

2 3000
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1
1 2 1...

output:

0

result:

ok correct!

Test #23:

score: 0
Accepted
time: 2ms
memory: 4072kb

input:

2000 2000
273 274 976318149
1818 1819 911362963
920 921 733992701
1147 1148 968069222
1076 1077 479630568
1576 1577 723601562
860 861 477629418
747 748 636289483
219 220 254346042
610 611 561106993
1173 1174 117741584
1788 1789 433959137
437 438 566901968
723 724 578256290
984 985 201368344
954 955 ...

output:

1
2000 1575

result:

ok correct!

Test #24:

score: 0
Accepted
time: 6ms
memory: 3864kb

input:

2000 2500
1936 1937 470205868
750 751 637463850
75 76 353874306
1012 1013 575007557
679 680 452883390
268 269 382879319
1885 1886 619233286
1617 1618 985926999
365 366 731212904
703 704 136815299
1543 1544 6628104
1586 1587 963856921
1904 1905 377843376
254 255 540189789
690 691 218468543
1169 1170 ...

output:

371
2000 413
2002 672
2003 1287
2004 986
2006 1839
2007 1677
2008 1555
2010 1201
2011 916
2012 1684
2013 1302
2015 61
2017 1813
2018 1256
2022 1177
2023 8
2024 888
2025 1206
2026 1362
2027 1430
2028 849
2029 1377
2031 124
2032 275
2033 266
2035 1735
2036 1842
2038 915
2039 508
2040 1883
2041 1435
20...

result:

ok correct!

Test #25:

score: 0
Accepted
time: 18ms
memory: 3888kb

input:

2000 3000
1100 1101 966680160
584 585 619523116
196 197 969093892
1265 1266 112963336
1463 1464 437550508
1320 1321 888461822
1414 1415 755948833
897 898 48495011
365 366 564439441
869 870 108232038
1323 1324 469077928
1432 1433 609528786
1885 1886 447585062
81 82 480544752
1819 1820 385633491
1371 ...

output:

588
2000 1034
2001 311
2002 1930
2003 719
2004 1732
2005 1906
2008 1942
2009 1387
2010 1647
2011 1893
2018 1544
2020 1626
2021 1607
2025 1733
2026 1777
2027 1600
2028 1612
2030 1760
2031 1772
2034 827
2035 269
2037 426
2040 1102
2043 668
2044 600
2045 1520
2046 1088
2047 1595
2053 72
2054 1395
2055 ...

result:

ok correct!

Test #26:

score: 0
Accepted
time: 0ms
memory: 3588kb

input:

10 18
2 6 2
6 1 2
1 10 2
10 4 2
4 3 2
3 9 2
9 8 2
8 5 2
5 7 2
2 4 1
4 10 1
10 3 1
3 5 1
5 6 1
6 7 1
7 8 1
8 1 1
1 9 1

output:

9
10 4
11 3
12 5
13 8
14 1
15 9
16 7
17 2
18 6

result:

ok correct!