360笔试求解

有没有大佬贴一份老张修路(最小生成树)题解,暴力会超时呜呜呜。
菜鸡暴力解:

n,m = input().split()
n,m = int(n),int(m)
nodes1 = list(map(int,input().split()))
nodes2 = list(map(int,input().split()))
distance = list(map(int,input().split()))
mat = [[0]*n for _ in range(n)]
tmp = sum(distance)
min_dis = tmp
def dfs(node,visited,dis):
    global tmp_min
    if len(visited) == n:return dis
    dic_tmp = mat[node]
    for k,v in enumerate(dic_tmp):
        if k not in visited:
            dis += v
            visited.add(k)
            tmp_min = min(dfs(k,visited,dis),tmp_min)
            dis -= v
            visited.remove(k)
    return tmp_min
for i in range(n):
    mat[nodes1[i]-1][nodes2[i]-1] = distance[i]
    mat[nodes2[i]-1][nodes1[i]-1] = distance[i]
for node in range(n):
    visited = set()
    visited.add(node)
    tmp_min = tmp
    x = dfs(node, visited, 0)
    min_dis = min(x,min_dis)
print(min_dis)



#360笔试##360笔试吐槽,赛码的输入太坑了#
全部评论
但第一题怎么ac,我怎么调都是73%,不知道哪里有问题
点赞 回复 分享
发布于 2022-08-27 16:50 浙江
排序加并差集可以过。
点赞 回复 分享
发布于 2022-08-27 18:58 陕西
并查集写就行,ak了
点赞 回复 分享
发布于 2022-08-27 17:11 江苏
这题克鲁斯卡尔就行 #include<bits/stdc++.h> using namespace std; vector<int> father; int find(int x){     return father[x] == x ? x : father[x] = find(father[x]); } bool cmp(const vector<int>& a, const vector<int>& b){     return a[2] < b[2]; } int main(){     int n, m;     cin>>n>>m;     father = vector<int>(n + 1);     for(int i = 1; i <= n; i++) father[i] = i;      vector<vector<int>> edges(m, vector<int>(3));     for(int i = 0; i < 3; i++){         for(int j = 0; j < m; j++)             cin>>edges[j][i];     }     sort(edges.begin(), edges.end(), cmp);     int ans = 0;     for(int i = 0; i < m; i++){         int f1 = find(edges[i][0]), f2 = find(edges[i][1]);         if(f1 == f2) continue;         ans += edges[i][2];         int ff = min(f1, f2);         father[f1] = father[f2] = ff;     }     cout<<ans<<endl;     return 0; }
3 回复 分享
发布于 2022-08-27 16:50 浙江
老哥,暴力会过多少?
点赞 回复 分享
发布于 2022-08-27 17:18 北京
我忘记要在所有遍历过的里面,找最小的😅😅考完想起来了。。
点赞 回复 分享
发布于 2022-08-27 17:33 广东
我也暴力 57.1好像
点赞 回复 分享
发布于 2022-08-27 17:52 广东
prim 82左右
点赞 回复 分享
发布于 2022-08-28 00:06 北京

相关推荐

头像 会员标识
昨天 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
与火:这不接? 留子的钱不挣白不挣
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
2 3 评论
分享
牛客网
牛客企业服务