Uva 6437 - Power Plant 裸最小生成树

原创 2013年12月01日 22:49:11

                 题意:

                          一个无向图中(至多100个点),..每条边有其费用...有些点是发电站..现在要求所有的点都可以达到至少一个发电站..所需的最小费用..

                 题解:

                          先就把发电站的点放到一个集合中..然后裸的kruskal了...

Program:

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <cmath>
#define MAXN 205
using namespace std;
struct node
{
       int u,v,d;
}edge[MAXN*MAXN];
int father[MAXN];
int getfather(int x)
{
      if (father[x]==x) return x;
      return father[x]=getfather(father[x]);
}
bool cmp(node a,node b)
{
      return a.d<b.d;
}
int main()
{
      int C,cases,N,K,M,i,u,v,f,ans; 
      scanf("%d",&C);
      for (cases=1;cases<=C;cases++)
      {
               scanf("%d%d%d",&N,&M,&K);
               for (i=1;i<=N;i++) father[i]=i;
               scanf("%d",&f);
               for (i=2;i<=K;i++) scanf("%d",&u),father[u]=f;
               for (i=1;i<=M;i++)
                   scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].d);
               sort(edge+1,edge+1+M,cmp);
               ans=0;
               for (i=1;i<=M;i++)
               {
                        u=edge[i].u,v=edge[i].v;
                        if (getfather(u)==getfather(v)) continue;
                        ans+=edge[i].d;
                        father[father[u]]=father[v];
               }
               printf("Case #%d: %d\n",cases,ans);
      }
      return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

UVALive 6437 Power Plant 【最小生成树 + 思维】

传送门 // 题意: 给定一幅带权图(n, m), 然后给定k个点, 每个点都要至少要和这k个点的一个点直接或间接相连, 问最少的花费是多少.(即不要的边我们直接删去, 只留我们要的那些边, 然后累...
  • Anxdada
  • Anxdada
  • 2018年01月13日 19:26
  • 28

UVALive-7303- Aquarium【最小生成树】【连通块】

UVALive - 7303- Aquarium 题目大意:给你一个r * c的格子,每个格子有一个 ‘ \ ’ 或者 ‘/’ 的墙,以及打掉墙的费用,问使得所有块联通的最小费用。(看图好理解) 题...
  • loy_184548
  • loy_184548
  • 2016年08月09日 22:41
  • 420

UVALive - 4848 Tour Belt(暴力+最小生成树)

题目大意:给出一个定义,如果一个块为连通块,且连通块里面的任意两点的长度大于外界的点到该块的点的长度,那这个块就称KTO 现在问KTO里面的点的数量有多少解题思路:kruscal算法,边从大到小排,...
  • L123012013048
  • L123012013048
  • 2015年08月21日 23:37
  • 548

UVALive 6437

题意:给你n个点,m条边,k个可以发电的地方,wenni
  • u011743499
  • u011743499
  • 2014年08月11日 11:08
  • 479

LA 6437 Power Plant (prim最小生成树)

还是裸的最小生成树 #include using namespace std; int T,N,M,P,K,a,b,c; int dist[1020],m[1020][1020]; bool p[1...
  • u010863471
  • u010863471
  • 2014年08月12日 10:53
  • 721

UVALive 4126 (ac自动机做状态类)

题意: 给定最多10个长度不超过10的子串,让构造长度为n(n 分析: 暴力是26^25中可能性,那么怎样精简状态,可以定义d[ i ][ j ][ s ]为当前构造的串长为i且已经到达自动机j...
  • playwfun
  • playwfun
  • 2015年10月09日 15:40
  • 327

uvalive 6396 数论 世界决赛的题

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&categ...
  • u011026968
  • u011026968
  • 2014年08月27日 21:32
  • 835

UVALive3263(计算几何基础)

好看的一笔画 依次按顺序给出一笔画所有顶点的坐标,求出平面中面的个数。 根据欧拉定理 V + F - E = 2 (V 是点,F是面,E是边),我们求出点数和边数就可以了。 通过判断线段...
  • chaiwenjun000
  • chaiwenjun000
  • 2016年08月09日 15:05
  • 291

UVALive 4670(AC自动机)

题意:有n个串,输出在t串出现次数最多的那个串,如果有多个按照输入顺序输入 题解:模板多,长度短,文本串长。适合多模式串匹配,适用AC自动机,这里使用map映射stirng为...
  • qq_24489717
  • qq_24489717
  • 2016年02月26日 18:14
  • 337

UVALive 6837 (最小生成树)

题意是给定一个联通图,求这个图的最小生成树的不可替代边有哪些,并计算这些边的总权值. 先求出任意一棵MST,然后标记树边和非树边,然后枚举非树边,对于非树边的两个点u,v,在MST中如果u->v的路...
  • morejarphone
  • morejarphone
  • 2015年12月07日 13:32
  • 275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Uva 6437 - Power Plant 裸最小生成树
举报原因:
原因补充:

(最多只允许输入30个字)