zoukankan      html  css  js  c++  java
  • kuangbin_MST B (POJ 1287)

    裸的模板题 因为直接用的邻接矩阵所以用最小值覆盖先前输入的重复边

    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <vector>
    #include <algorithm>
    #define INF 0x3F3F3F3F
    using namespace std;
    
    typedef pair<int, int> pii;
    struct cmp{
        bool operator () (const pii a, const pii b){
            return a.first > b.first;
        }
    };
    
    int n, m, val[60][60];
    
    int prim(int s)
    {
        int ans = 0, dist[60], vis[60];
        memset(dist, 0x3f, sizeof dist);
        memset(vis, false, sizeof vis);
        
        priority_queue<pii, vector<pii>, cmp> q;
        for(int i = 1; i <= n; i++){
            if(val[s][i] != INF){
                dist[i] = val[s][i];
                q.push(make_pair(dist[i], i));
            }
        }
        dist[s] = 0;
        vis[s] = true;
        while(!q.empty()){
            pii u = q.top();
            q.pop();
            if(vis[u.second]) continue;
            vis[u.second] = true;
            ans += u.first;
            for(int i = 1; i <= n; i++){
                if(!vis[i] && dist[i] > val[u.second][i]){
                    dist[i] = val[u.second][i];
                    q.push(make_pair(dist[i], i));
                }
            }
        }
        return ans;
    }
    int main()
    {
        while(scanf("%d%d", &n, &m) == 2){
            int u, v, w;
            memset(val, 0x3f, sizeof val);
            while(m--){
                scanf("%d%d%d", &u, &v, &w);
                val[u][v] = val[v][u] = min(val[u][v], w);
            }
            printf("%d
    ", prim(1));
        }
        return 0;
    }
  • 相关阅读:
    Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置
    Linux 下使用网易的SMTP服务器 发送邮件
    Spring-boot 最小demo
    go build 时报错 cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
    spark-shell 执行脚本并传入参数
    JVM
    spark
    spark
    linux
    linux
  • 原文地址:https://www.cnblogs.com/quasar/p/5144520.html
Copyright © 2011-2022 走看看