• P1195 口袋的天空


    P1195 口袋的天空

    题目背景

    小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。

    有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。

    题目描述

    给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。

    现在小杉要把所有云朵连成K个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。

    输入输出格式

    输入格式:

    每组测试数据的

    第一行有三个数N,M,K(1<=N<=1000,1<=M<=10000,1<=K<=10)

    接下来M个数每行三个数X,Y,L,表示X云和Y云可以通过L的代价连在一起。(1<=X,Y<=N,0<=L<10000)

    30%的数据N<=100,M<=1000

    输出格式:

    对每组数据输出一行,仅有一个整数,表示最小的代价。

    如果怎么连都连不出K个棉花糖,请输出'No Answer'。

    输入输出样例

    输入样例#1:
    3 1 2
    1 2 1
    
    输出样例#1:
    1

    分析:最小生成树,唯一注意的是连出k棉花糖,需要连接n-k条边。

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 const int MAXN = 1010;
     6 struct Edge{
     7     int x,y,w;
     8     bool operator < (const Edge &a) const 
     9     {
    10         return w < a.w ;
    11     }
    12     
    13 }e[10010];
    14 int fa[MAXN];
    15 int n,m,k,cnt,ans;
    16 
    17 int find(int a)
    18 {
    19     return a==fa[a]?a:fa[a]=find(fa[a]);
    20 }
    21 int main()
    22 {
    23     scanf("%d%d%d",&n,&m,&k);
    24     for (int i=1; i<=n; ++i) fa[i] = i;
    25     for (int i=1; i<=m; ++i)
    26         scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w);
    27     sort(e+1,e+m+1);
    28     for (int i=1; i<=m; ++i)
    29     {
    30         int rx = find(e[i].x);
    31         int ry = find(e[i].y);
    32         if (rx!=ry) 
    33         {
    34             cnt++;
    35             fa[rx] = ry;
    36             ans += e[i].w;
    37             if (cnt==n-k) break;
    38         }
    39     }
    40     if (cnt==n-k) printf("%d",ans);
    41     else printf("No Answer");
    42     return 0;
    43 }
  • 相关阅读:
    Linux下的SVN服务器搭建
    [转][osg]关于PagedLOD 加载卸载机制
    [原][osg]osg文件与osgb文件的区别
    [转][cesium]1.添加本地服务器
    [原][osg][osgearth]倾斜摄影2.文件格式分析:OSGB
    [原][数学][C++][osg]空间向量OA到转到空间向量OB、以及四元素Q1转到Q2的函数
    [原][osgEarth]添加自由飞行漫游器
    [c][c++]按位操作
    [转]QT中QString与string的转化,解决中文乱码问题
    [原][osg][osgearth]倾斜摄影1.介绍
  • 原文地址:https://www.cnblogs.com/mjtcn/p/7055974.html
Copyright © 2020-2023  润新知