问题 H: Vegetable and Road again

时间限制: 1 Sec 内存限制: 128 MB

提交: 19 解决: 8

题目描述

修路的方案终于确定了。市政府要求任意两个公园之间都必须实现公路交通(并不一定有直接公路连接,间接公路相连也可以)。但是考虑到经济成本,市政府希望钱花的越少越好。

你能帮助Vegetable找到给出的修路方案所需的最少花费吗?

输入

有T组测试数据。

每组包含一组N(0<n<=100)和M,N表示有N个公园,M表示这N个公园间的M条路。

接下来给出M行,每行包括A,B, C。表示A和B之间修公路需要花费C元。

输出

若给出的方案可行,输出该方案最小需要的花费,若给出的方案不可行,输出Wrong。

样例输入

1
4 3
1 2 1
2 3 2
3 4 3

样例输出

6
#include<cstdio>
#include<algorithm>
using namespace std; const int maxn = ; int f[maxn]; struct edge
{
int from;
int to;
int cost;
friend bool operator < (edge a,edge b)
{
return a.cost < b.cost;
}
}e[maxn]; void ufs(int n)
{
for(int i = ; i <= n; i++)
f[i] = i;
} int findd(int x)
{
if(f[x] == x)
return x;
else return findd(f[x]);
} void merger(int x,int y)
{
int fx = findd(x);
int fy = findd(y);
if(fx != fy)
f[fy] = fx;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
ufs(n);
int cnt = ;
for(int i = ; i < m; i++)
scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].cost);
sort(e,e + m);
for(int i = ; i < m; i++)
{
if(findd(e[i].from) != findd(e[i].to))
{
merger(e[i].from,e[i].to);
cnt += e[i].cost;
}
}
int flag = ;
for(int i = ; i < n; i++)
{
if(findd(f[i]) != findd(f[i + ]))
{
flag = ;
printf("Wrong\n");
break;
}
}
if(flag)
printf("%d\n",cnt);
}
return ;
}

最小生成树模板题 hpu 积分赛 Vegetable and Road again的更多相关文章

  1. O - 听说下面都是裸题 (最小生成树模板题)

    Economic times these days are tough, even in Byteland. To reduce the operating costs, the government ...

  2. POJ 1258:Agri-Net Prim最小生成树模板题

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45050   Accepted: 18479 Descri ...

  3. POJ 1789 Truck History (Kruskal最小生成树) 模板题

    Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for v ...

  4. 最小生成树模板题-----P3366 【模板】最小生成树

    题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入格式 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<=200000) ...

  5. 最小生成树模板题POJ - 1287-prim+kruskal

    POJ - 1287超级模板题 大概意思就是点的编号从1到N,会给你m条边,可能两个点之间有多条边这种情况,求最小生成树总长度? 这题就不解释了,总结就算,prim是类似dijkstra,从第一个点出 ...

  6. poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题

    poj 1251  && hdu 1301 Sample Input 9 //n 结点数A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E ...

  7. POJ1258:Agri-Net(最小生成树模板题)

    http://poj.org/problem?id=1258 Description Farmer John has been elected mayor of his town! One of hi ...

  8. POJ 1287 Networking (最小生成树模板题)

    Description You are assigned to design network connections between certain points in a wide area. Yo ...

  9. 继续畅通工程--hdu1879(最小生成树 模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1879 刚开始么看清题  以为就是n行  后来一看是n*(n-1)/2行   是输入错误  真是够够的 #incl ...

随机推荐

  1. java 泛型好文收集

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一 https://www.cnblogs.com/coprince/p/8603492.html

  2. Windows10下virtualenv配置

    1.安装virtualenv pip install virtualenv 2.选定一个目录,作为存储不同环境的总目录 3.安装virtualenvwrapper-powershell(只适用于Pyt ...

  3. 美客分销商城-接力购源码系统,全开源代码可进行二次开发,微信小程序分销商城

    1. 准备服务器.域名(SSL证书).认证的微信小程序.微信支付商户号 2. 系统功能简介 三.演示案例,微信扫码查看 四.后台管理系统 五. 全套开源源码,进行二次开发 六.本系统完美运营,全套代码 ...

  4. CentOS6.5 添加开机自启动脚本

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务.在解问题之前先来看看Linux的启动流程. 一.Linux的启动流程 主要顺序就是: 1. 加载内核 2. 启动初始化进程 3. 确 ...

  5. 微信小程序之this.setData

    Page.prototype.setData() setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值. 注意: 直接修改 this.data 无效,无法改变页 ...

  6. Android新特性介绍,ConstraintLayout完全解析

    今天给大家带来2017年的第一篇文章,这里先祝大家新年好. 本篇文章的主题是ConstraintLayout.其实ConstraintLayout是Android Studio 2.2中主要的新增功能 ...

  7. 宣布推出针对 Microsoft OneDrive 和 SharePoint 的 Autodesk AutoCAD 新集成

    在 OneDrive 和 SharePoint,我们的愿景是随时随地为你的团队提供简单而安全的文件访问.无论你的职位.专业或行业是什么,我们将始终致力于扩展和连接你最重视的内容.今天,我们发布了与 A ...

  8. ubuntu的apt-get install的默认安装路径(转)

    一.apt-get 安装 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb或者直接双击此文件 dpkg 是Debian ...

  9. 13.vue组件

    vue组件(一) 组件嵌套: 1.全局嵌套: <!doctype html> <html> <head> <meta charset="utf-8& ...

  10. vue 里filter的基本用法

    filter是和data  computed   methods watch一样,都是new Vue()的参数. 用于对简单数据的处理,和computed有冲突,所以从vue2.0后就对filter做 ...