zoukankan      html  css  js  c++  java
  • poj1861

    最小生成树,由于是special judge 所以不用非得结果和样例一样

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <algorithm>
    using namespace std;

    #define maxm 15005
    #define maxn 1005

    struct Edge
    {
    int u, v, w;
    }edge[maxm], mst[maxm];

    int n, m, ecount, father[maxn];

    void input()
    {
    scanf(
    "%d%d", &n, &m);
    for (int i = 0; i < m; i++)
    scanf(
    "%d%d%d", &edge[i].u, &edge[i].v, &edge[i].w);
    }

    bool operator < (const Edge &a, const Edge &b)
    {
    return a.w < b.w;
    }

    int getanc(int a)
    {
    if (father[a] == a)
    return a;
    return father[a] = getanc(father[a]);
    }

    void merge(int a, int b)
    {
    father[getanc(a)]
    = getanc(b);
    }

    void work()
    {
    for (int i = 1; i <= n; i++)
    father[i]
    = i;
    int ans;
    ecount
    = 0;
    for (int i = 0; i < m; i++)
    if (getanc(edge[i].u) != getanc(edge[i].v))
    {
    merge(edge[i].u, edge[i].v);
    ans
    = edge[i].w;
    mst[ecount
    ++] = edge[i];
    }
    printf(
    "%d\n%d\n", ans, ecount);
    for (int i = 0; i < ecount; i++)
    printf(
    "%d %d\n", mst[i].u, mst[i].v);
    }

    int main()
    {
    // freopen("t.txt", "r", stdin);
    input();
    sort(edge, edge
    + m);
    work();
    return 0;
    }

  • 相关阅读:
    开启 clr enabled
    索引查看
    nginx 安装
    mysql中int(10)与int(11)有什么区别吗?
    1.安卓开发基础1~6笔记
    Vue项目搭建基础之Vue-cli模版测试
    alert执行顺序
    介绍call和apply
    a链接易混淆与form表单简易验证用法详解
    js正则知识点
  • 原文地址:https://www.cnblogs.com/rainydays/p/2078308.html
Copyright © 2011-2022 走看看