前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UVA 10600 ACM Contest and Blackout(次小生成树)

UVA 10600 ACM Contest and Blackout(次小生成树)

作者头像
Ch_Zaqdt
发布2019-01-10 15:48:18
4090
发布2019-01-10 15:48:18
举报
文章被收录于专栏:Zaqdt_ACMZaqdt_ACM

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1541

        直接求最小生成树和次小生成树就好了...可以当模板用...


AC代码:

代码语言:javascript
复制
#include <bits/stdc++.h>
#define maxn 105
#define inf 0x3f3f3f3f
using namespace std;
int Map[maxn][maxn], path[maxn][maxn];
bool vis[maxn], used[maxn][maxn];
int dist[maxn], pre[maxn];
int T,n,m;

void init(){
  memset(used, false, sizeof(used));
  memset(path, 0, sizeof(path));
  memset(Map, inf, sizeof(Map));
}

int Prim(){
  memset(vis, false, sizeof(vis));
  int sum = 0;
  for(int i=1;i<=n;i++){
    dist[i] = Map[1][i];
    pre[i] = 1;
  }
  vis[1] = true;
  for(int i=1;i<n;i++){
    int Min = inf;
    int u = 1;
    for(int j=1;j<=n;j++){
      if(!vis[j] && dist[j] < Min){
        Min = dist[j];
        u = j;
      }
    }
    vis[u] = true;
    sum += Min;
    used[ u ][ pre[u] ] = used[ pre[u] ][ u ] = true;
    for(int j=1;j<=n;j++){
      if(vis[j] && j != u)
        path[j][u] = path[u][j] = max(path[j][pre[u]], dist[u]);
      if(vis[j] == false){
        if(dist[j] > Map[u][j]){
          dist[j] = Map[u][j];
          pre[j] = u;
        }
      }
    }
  }
  return sum;
}

int SecPrim(int xx){
  int ans = inf;
  for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j++){
      if(i != j && used[i][j] == false){
        ans = min(ans, xx - path[i][j] + Map[i][j]);
      }
    }
  }
  return ans;
}

int main()
{
  scanf("%d",&T);
  while(T--){
    init();
    scanf("%d%d",&n,&m);
    for(int i=0;i<m;i++){
      int u, v, w;
      scanf("%d%d%d",&u,&v,&w);
      Map[u][v] = Map[v][u] = w;
    }
    int ans = Prim();
    int ans1 = SecPrim(ans);
    printf("%d %d\n", ans, ans1);
  }
  return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年01月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档