zoukankan      html  css  js  c++  java
  • 克鲁斯卡尔

    type arr=record
            u,v,w,nt:longint;
            end;
    var i,j,m,n,x,y:longint;
        ans:int64;
        a:array[0..200008] of arr;
        fa:array[0..200008] of longint;
    function find(x:longint):longint;
    begin
        if fa[x]=x then exit(x);
        fa[x]:=find(fa[x]);
        exit(fa[x]);
    end;
    procedure sort(l,r:longint);
    var i,j,x:longint;
        temp:arr;
    begin
        i:=l;j:=r; x:=a[(l+r) div 2].w;
        while i<=j do
        begin
            while a[i].w<x do inc(i);
            while x<a[j].w do dec(j);
            if i<=j then
            begin
                temp:=a[i];
                a[i]:=a[j];
                a[j]:=temp;
                inc(i);
                dec(j);
            end;
        end;
        if l<j then sort(l,j);
        if i<r then sort(i,r);
    end;
    begin
        readln(n,m);
        for i:=1 to m do readln(a[i].u,a[i].v,a[i].w);
            for i:=1 to n do fa[i]:=i;
        sort(1,m);
        for i:=1 to m do
        begin
            x:=find(a[i].u);
            y:=find(a[i].v);
            if x<>y then
            begin
                ans:=ans+a[i].w;
                fa[x]:=y;
            end;
        end;
        writeln(ans);
    end.
  • 相关阅读:
    mysql--表数据的操作
    mysql--增删改查
    mysql--约束条件
    Mysql--基本配置
    Mysql--数据表
    Mysql--数据库的操作
    位运算的应用
    读书笔记--模板与泛型编程
    读书笔记六
    读书笔记五
  • 原文地址:https://www.cnblogs.com/rpSebastian/p/4325686.html
Copyright © 2011-2022 走看看