UESTC 918 WHITE ALBUM --生成树变形
最小生成树变形。
题目已经说得很清楚,要求到达每个房间,只需求一个最小生成树,这时边权和一定是最小的,并且那k个房间一定与所有点都有通路,即一定都可以逃脱。
但是有可能当所有点都有了该去的安全房间以后,安全房间之间并不需要连边了,这样就会变成多个树,不好处理。想一想,既然不需要连边了,也就是边权不再增加,如果将他们之间的边权变为0,也可以起到不增加边权的作用,并且可以将他们联通成一棵生成树了。所以,可以将k个点都通过一条边权为0的边,连到一个不在图中的点上,这样都可以联通了,在求一个最小生成树即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 1007 int fa[N];
int n,m,k;
int res; struct Edge
{
int u,v,w;
}G[N*N/]; int cmp(Edge ka,Edge kb)
{
return ka.w < kb.w;
} int findset(int x)
{
if(x != fa[x])
fa[x] = findset(fa[x]);
return fa[x];
} void Kruskal()
{
int i,j,cnt = m+k;
sort(G,G+cnt,cmp);
for(i=;i<=n;i++)
fa[i] = i;
res = ;
for(i=;i<cnt;i++)
{
int u = G[i].u;
int v = G[i].v;
int fx = findset(u);
int fy = findset(v);
if(fx != fy)
{
res += G[i].w;
fa[fx] = fy;
}
}
} int main()
{
int i,j,a,b,c,x;
scanf("%d%d%d",&n,&m,&k);
for(i=;i<k;i++)
{
scanf("%d",&x);
G[i].u = x;
G[i].v = ;
G[i].w = ;
}
for(i=k;i<m+k;i++)
{
scanf("%d%d%d",&a,&b,&c);
G[i].u = a;
G[i].v = b;
G[i].w = c;
}
Kruskal();
printf("%d\n",res);
return ;
}
UESTC 918 WHITE ALBUM --生成树变形的更多相关文章
- 2014 UESTC暑前集训图论专题解题报告
A.方老师和缘分 http://www.cnblogs.com/whatbeg/p/3765621.html B.方老师和农场 http://www.cnblogs.com/whatbeg/p/376 ...
- Python学习札记(四十一) IO 1
参考:IO NOTE A.Pre 1.IO在计算机中指Input/Output,也就是输入和输出. 2.IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但 ...
- Angel Beats,AFOer Beats?
意识模糊的时候适合写一些奇怪的东西? NOI退役之后我尝试了很多方法调节心态.(比如做OI题,出OI题,学文化课,读书,吃饭,睡觉,水群,看番,推galgame). 然而看啥都是退役的画风.比如说推W ...
- POJ 2263 Heavy Cargo(ZOJ 1952)
最短路变形或最大生成树变形. 问 目标两地之间能通过的小重量. 用最短路把初始赋为INF.其它为0.然后找 dis[v]=min(dis[u], d); 生成树就是把最大生成树找出来.直到出发和终点能 ...
- Go xmas2020 学习笔记 12、Structs, Struct tags & JSON
12-Structs, Struct tags & JSON. Struct. Struct Gotcha. Anonymous Struct Type. Make the zero valu ...
- POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】
题意: 给一个无向图,找1到n所有的路中每条路最小权值的最大值! 屌丝一开始的思想是利用dij的变形~ 但是==屌丝忘记了更新dis数组~结果TLE无数次... 说正经的~dij的变形思想是这样的if ...
- uestc oj 1218 Pick The Sticks (01背包变形)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 给出n根木棒的长度和价值,最多可以装在一个长 l 的容器中,相邻木棒之间不允许重叠,且两边上的木棒,可 ...
- 2015 CCPC D- Pick The Sticks(UESTC 1218) (01背包变形)
http://acm.uestc.edu.cn/#/problem/show/1218 既然二维dp表示不了,就加一维表示是否在边界放置,放置一个,两个.有一个trick就是如果只放一根,那么多长都可 ...
- hdu 3367(与最大生成树无关。无关。无关。重要的事情说三遍+kruskal变形)
Pseudoforest Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
随机推荐
- Python数学运算的一个小算法(求一元二次方程的实根)
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax² + bx + c = 0的两个解. #!/usr/bin/env python # -*- coding: ...
- Error writing file‘frm‘(Errcode: 28)
Error writing file‘frm‘(Errcode: 28) mysql出现这个错误,表示磁盘已经满了,该增加容量了.
- wap网站safari浏览器和微信cooke不能登录问题
wap网站safari浏览器cooke不能登录问题: http://wenku.baidu.com/link?url=VnPxl43PySYVygt09vkQ7xwxOD0JCXNtw3Fx7100j ...
- javascript宿主对象之window.screen、window.close()/open()、window.moveTo、window.resizeTo
window.screen属性所提供的是浏览器以外的信息.这里只简单的概述一下: screen.availWidth - 可用的屏幕宽度 (除去操作系统菜单) screen.availHeight - ...
- 关于JS闭包,作者不详(转)
说明:本文由两篇文章结合而成,系从他人笔记中转过来的, 具体作者不详.因为觉得不错,遂共享之.如有侵权,立删致歉. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变 ...
- .NET破解之PDFdo转换器
无意中看到一个PDF转换器,叫PDFdo,看起了功能挺多的,于是想把它破了. 下载 官网:http://www.pdfdo.com/ 安装 安装后,只有一个exe应用程序,如果是.NET 程序应该有很 ...
- sharepoint 2013 文件“/_controltemplates/SPMRB/AllStatBookingsForm.ascx”不存在
现象: 文件“/_controltemplates/SPMRB/AllStatBookingsForm.ascx”不存在. 分析: 此代码在sp2010好用,但是在sp2013则报以上错误. 解决办法 ...
- UC如被百度控股,手机qq浏览器改如何进攻和防守
很早以前在公司内部论坛里写的一篇文章,绯闻已经过过去了,现在已物事人物,UC已有阿里大靠山了. ----------------------------------------------- 据网络媒 ...
- 《C程序设计的抽象思维》1.9编程练习
本文地址:http://www.cnblogs.com/archimedes/p/programming-abstractions-in-c-1.html,转载请注明源地址. 1.温度转换: #inc ...
- UISlider显示进度(并且实现图片缩放)
图片展示效果如下: 其他没什么好说的,直接上代码: RootView.h: #import <UIKit/UIKit.h> @interface RootView : UIView @pr ...