• poj2485


     1 #include <iostream>
     2 #include <string>
     3 #include <vector>
     4 #include <cstdlib>
     5 #include <cmath>
     6 #include <map>
     7 #include <algorithm>
     8 #include <list>
     9 #include <ctime>
    10 #include <set>
    11 #include <string.h>
    12 #include <queue>
    13 #include <cstdio>
    14 using namespace std;
    15 typedef int typec; // type of cost
    16 const int V = 501;
    17 const typec inf = 0x3f3f3f3f; // max of cost
    18 #define CLR(arr, what) memset(arr, what, sizeof(arr))
    19 int vis[V];
    20 typec lowc[V];
    21 typec cost[V][V];
    22 typec prim(typec cost[][V], int n) {
    23     int i, j, p;
    24     typec minc, res = 0;
    25     CLR(vis, 0);
    26     vis[0] = 1;
    27     for (i = 1; i < n; i++)
    28         lowc[i] = cost[0][i];
    29     for (i = 1; i < n; i++) {
    30         minc = inf;
    31         p = -1;
    32         for (j = 0; j < n; j++)
    33             if (0 == vis[j] && minc > lowc[j]) {
    34                 minc = lowc[j];
    35                 p = j;
    36             }
    37         if (inf == minc)
    38             return -1; //  原图不连通
    39         res += minc;
    40         vis[p] = 1;
    41         for (j = 0; j < n; j++)
    42             if (0 == vis[j] && lowc[j] > cost[p][j])
    43                 lowc[j] = cost[p][j];
    44     }
    45     return res;
    46 }
    47 int dist(string& a, string& b) {
    48     int res = 0;
    49     for (int i = 0; i < 7; i++) {
    50         res += (a[i] != b[i]);
    51     }
    52     return res;
    53 }
    54 inline void read(int& a) {
    55     scanf("%d", &a);
    56 }
    57 int main() {
    58     int abc, n;
    59     cin >> abc;
    60     string tmp;
    61     while (abc--) {
    62         CLR(cost, inf);
    63         cin >> n;
    64         for (int a = 0; a < n; a++) {
    65             for (int b = 0; b < n; b++) {
    66                 read(cost[a][b]);
    67             }
    68         }
    69         prim(cost, n);
    70         int res = 0;
    71         for (int a = 0; a < n; a++) {
    72             res = max(res, lowc[a]);
    73         }
    74         cout << res << endl;
    75     }
    76     return 0;
    77 }

    最小生成树中最长的某条路径

    from kakamilan

  • 相关阅读:
    C# 解析 json
    鸡汤一则
    jsp 环境配置记录
    jquery validate 自定义验证方法
    axure rp pro 7.0(页面原型工具)
    跨数据库服务器查询步骤
    .net 直接输出远程文件到浏览器和下载文件保存到本机
    URL中文乱码处理总结(转)
    使用ajax上传中遇到的问题
    Web 通信 之 长连接、长轮询(转)
  • 原文地址:https://www.cnblogs.com/kakamilan/p/3080685.html
Copyright © 2020-2023  润新知