首页 / 客观题库

70104 - 2025青少年编程挑战赛提高组完善2

题目(材料题)

扩充最小生成树  给定n个节点一个树,树的每条边有权值。把这个树扩充成完全图,使得完全图的最小生成树一定是原来的树。求扩充的边的权值总和的最小值。

 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

#include<iostream>

#include<algorithm>

using namespace std;

struct edge {

    int u, v, val;

}el[10001];

int group[10001];

int cnt[10001];

bool cmp(edge e1, edge e2) {

    return     ①    ;

}

int find(int x) {

    if (x != group[x]) {

        group[x] = find(group[x]);

    }

    return group[x];

}

int main() {

    int n;

    long long ans = 0;

    cin >> n;

    for (    ②    ) {

        cin >> el[i].u >> el[i].v >> el[i].val;

    }

    sort(el + 1, el + n, cmp);

    for (int i = 1; i <= n; i++) {

        group[i] = i;

            ③    ;

    }

    for (int i = 1; i < n; i++) {

        int x = find(el[i].u), y = find(el[i].v);

        ans += (    ④    ) * (el[i].val + 1);

            ⑤    ;

        group[x] = group[y];

    }

    cout << ans;

}

||
( 单选 )

①处应填: 

A e1.u< e2.u

B e2.u< e1.u

C e1.val < e2.val

D e2.val < e1.val

( 单选 )

②处应填:

A int i = 1; i <= n; i++

B int i = 1; i < n; i++

C int i = 0; i < n; i++

D int i = 0; i <= n; i++

( 单选 )

③处应填: 

A cnt[i] = 0

B cnt[i] = 1

C cnt[i] = i

D cnt[i] = n

( 单选 )

④处应填: 

A cnt[x] + cnt[y]

B cnt[x] + cnt[y] - 1

C cnt[x] * cnt[y]

D cnt[x] * cnt[y] – 1

( 单选 )

⑤处应填: 

 

A cnt[x] ++

B cnt[y] ++

C cnt[x] += cnt[y]

D cnt[y] += cnt[x]

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36