最小生成树 prime算法 UVALive - 6437
题目链接:https://vjudge.net/contest/241341#problem/D
这里有多个发电站,需要求出所有点都和发电站直接或间接相连的最小代价,那么就是求出最小生成树的问题了,有点细微的不同是我们一开始要把所有的发电站看成起点(看成一个点),把其他点到发电站的最小代价求出,之后就是模板题了。
代码:
#include<iostream>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f;
int map[][],vis[],ss[],dis[];
int n,m,k,t,ans;
void prime()
{
for(int i=;i<=k;i++)//多加了一层循环,遍历所有发电站
{
for(int j=;j<=n;j++)
{
dis[j]=min(dis[j],map[ss[i]][j]);
}
}
for(int i=;i<n;i++)
{
int min1=inf,u=;
for(int j=;j<=n;j++)
{
if(!vis[j]&&dis[j]<min1)
{
min1=dis[j];
u=j;
}
}
if(u==) //结束
return;
vis[u]=;
ans+=min1;
for(int j=;j<=n;j++)
{
if(!vis[j]&&dis[j]>map[u][j])
{
dis[j]=map[u][j];
}
}
}
}
int main()
{
cin>>t;
int count1=;
while(t--)
{
cin>>n>>m>>k;
memset(vis,,sizeof(vis));
int u,v,w;
memset(dis,0x3f,sizeof(dis));
memset(map,0x3f,sizeof(map));
for(int i=;i<=k;i++)
{
cin>>ss[i]; //ss数组用来保存发电站
vis[ss[i]]=; //标记为已经走过
dis[ss[i]]=; //自己到自己为0
}
for(int i=;i<=m;i++)
{
cin>>u>>v>>w;
if(map[u][v]>w)
map[u][v]=map[v][u]=w;
}
ans=;
prime();
cout<<"Case #"<<++count1<<": "<<ans<<endl;
}
return ;
}
最小生成树 prime算法 UVALive - 6437的更多相关文章
- POJ2395 最小生成树 - Prime算法
题目: Out of Hay Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Description The ...
- 最小生成树prime算法模板
#include<stdio.h> #include<string.h> using namespace std; int map[505][505]; int v, e; i ...
- hdoj 1233 还是畅通工程---最小生成树---prime算法
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1233 可以用Kruskal来做,不过当图的边比较稠密的时候用prime会更快一些. AC代码:296MS ...
- hdoj 1863 畅通工程 最小生成树---prime算法
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1863 注意有可能出现无法生成树的情况. #include <iostream> #inclu ...
- 最小生成树---Kruskal/Prime算法
1.Kruskal算法 图的存贮采用边集数组或邻接矩阵,权值相等的边在数组中排列次序可任意,边较多的不很实用,浪费时间,适合稀疏图. 方法:将图中边按其权值由小到大的次序顺序选取,若选边后不 ...
- 最小生成树之算法记录【prime算法+Kruskal算法】【模板】
首先说一下什么是树: 1.只含一个根节点 2.任意两个节点之间只能有一条或者没有线相连 3.任意两个节点之间都可以通过别的节点间接相连 4.除了根节点没一个节点都只有唯一的一个父节点 5.也有可能是空 ...
- prime算法求最小生成树(畅通工程再续)
连着做了四道畅通工程的题,其实都是一个套路,转化为可以求最小生成树的形式求最小生成树即可 这道题需要注意: 1:因为满足路的长度在10到1000之间才能建路,所以不满足条件的路径长度可以初始化为无穷 ...
- hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)
还是畅通project Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 最小生成树(prime算法 & kruskal算法)和 最短路径算法(floyd算法 & dijkstra算法)
一.主要内容: 介绍图论中两大经典问题:最小生成树问题以及最短路径问题,以及给出解决每个问题的两种不同算法. 其中最小生成树问题可参考以下题目: 题目1012:畅通工程 http://ac.jobdu ...
随机推荐
- CustomJSProperties珍藏版。目的是减少客户端的代码数量,但是又能将服务器数据传输给客户端。关键是:数据是实时更新的!!!!
[这是帮助文档的说明] CustomJSProperties EventThe CustomJSProperties event fires each time a control callback ...
- 20165304 实验二 Java面向对象程序设计
一.面向对象程序设计1--单元测试和TDD 实验要求 1.参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习 2 ...
- a stop job is running for Security Auditing Services
内核是3.10.0-514.el7,启动时有如下报错: a stop job is running for Security Auditing Services(56s / 1min 30s) 系统启 ...
- LeetCode OJ 19. Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...
- Android Uri获取真实路径以及文件名的方法【转】
原文地址:https://blog.csdn.net/MikoGodZd/article/details/50979653 在Android 编程中经常会用到uri转化为文件路径 下面是4.4后通过U ...
- 多线程 死锁 wait(int i) notifyAll()
public class ThreadDemo5 { public static void main(String[] args){ Pool pool = new Pool(); Productor ...
- Unity3D教程宝典之Shader篇
教程目录 基础讲:Shader学习方法基础讲:基础知识特别讲:常见问题解答特别讲:CG函数 第一讲: Shader总篇第二讲: Fixed Function Shader 第三讲: Vertex&am ...
- Unity3D初学之2D动画制
作者:Alex Rose Unity最近宣布推出额外的2D游戏支持,添加了Box 2D物理和一个精灵管理器. 但这里还是有些技巧需要牢记在心.逐帧更改图像只是动画制作的冰山一角,若要让你的游戏出色运行 ...
- spring boot 中使用filter
- 吴裕雄 python深度学习与实践(2)
#coding = utf8 import threading,time,random count = 0 class MyThread (threading.Thread): def __init_ ...