[Awson原创]网络(network)
Description
Awson是某国际学校信竞组的一只菜鸡。学校为了使教育信息化,打算在学校内新建机房,并且为机房联网。但吝啬的学校又不想花费过多的开销,于是将规划 网络路线的任务交给了信竞组的Awson。由于他是一只名副其实的菜鸡,他并不知道怎么规划,甚至不知道怎么打开编程软件,于是他又把这个任务交给了你。
学校打算新建N(1<=N<=5)个机房,编号为1,2,…,N,这些机房错落在学校各个角落。为了联网,学校可以直接在机房内安装适配器, 安装需要一定费用且每个机房费用不同。当然也可以借助其他的一些教室,从已安装适配器的地方接网线。这些教室不一定是机房,有M(1<=M& lt;=1000)个非机房的教室,编号为N+1,N+2,…,N+M。这些教室也可以安装适配器,从而接网线到附近的机房。现给出每处安装适配器的费用 以及教室间接网线的费用。求使所有机房连上网的费用最小值(非机房的教室没必要全联网)。
Input
第1行:三个整数N,M,Q(Q的含义下面有解释)
第2行:共N+M个整数,第i个数表示在编号为i的地方安装适配器费用Ai
第3~Q+2行:每行三个整数U,V,C,表示编号为U,V间连接网线的费用为C
Output
共1行,1个整数,表示使所有机房连上网的费用最小值。
Sample Input1
3 1 3 1 2 3 4 1 4 2 2 4 2 3 4 4
Sample Output1
Sample Input2
4 1 45 5 5 5 11 5 12 5 13 5 14 5 1
Sample Output2
Hint
样例解释:
对于样例1:直接在每个机房安装适配器,开销最小,为1+2+3=6。
对于样例2:在唯一一个非机房的教室安装适配器,并从此处接网线到各个机房,开销最小,为1+1+1+1+1=5。
数据规模:
20%的数据有N=1;
另20%的数据有N=2;
另20%的数据有N=3;
100%的数据有1<=N<=5,1<=M<=1000,M<=Q<=5000,1<=A,C<=10000。
题解
斯坦纳树裸题,当模板存着。
建立超级源点连接每个节点,边权为装适配器的费用。
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
;
;
int n,m,q;
struct tt
{
int to,cost,next;
}edge[P*];
],top;
int u,v,c;
void Add(int u,int v,int c);
][N+];
];
queue<int>Q;
void SPFA();
<<][N+];
void DP();
int main()
{
scanf("%d%d%d",&n,&m,&q);
;i<=n+m;i++)
{
scanf("%d",&c);
Add(,i,c);
Add(i,,c);
}
;i<=q;i++)
{
scanf("%d%d%d",&u,&v,&c);
Add(u,v,c);
Add(v,u,c);
}
SPFA();
DP();
printf(<<(n+))-][]);
;
}
void Add(int u,int v,int c)
{
edge[++top].to=v;
edge[top].cost=c;
edge[top].next=path[u];
path[u]=top;
}
void SPFA()
{
memset(dist,/,sizeof(dist));
;s<=n+m;s++)
{
dist[s][s]=;
Q.push(s);
vis[s]=;
while (!Q.empty())
{
for (int i=path[Q.front()];i;i=edge[i].next)
{
if (dist[s][edge[i].to]>dist[s][Q.front()]+edge[i].cost)
{
dist[s][edge[i].to]=dist[s][Q.front()]+edge[i].cost;
if (!vis[edge[i].to])
{
Q.push(edge[i].to);
vis[edge[i].to]=;
}
}
}
vis[Q.front()]=;
Q.pop();
}
}
}
void DP()
{
memset(f,/,sizeof(f));
;i<=n;i++)
;j<=n+m;j++)
f[<<i][j]=dist[i][j];
;i<=n+m;i++) f[][i]=;
;sta<(<<(n+));sta++) ))
{
;i<=n+m;i++)
)&sta)
if (f[sta][i]>f[sub][i]+f[sta^sub][i])
f[sta][i]=f[sub][i]+f[sta^sub][i];
;i<=n+m;i++)
;j<=n+m;j++)
if (f[sta][i]>f[sta][j]+dist[j][i])
f[sta][i]=f[sta][j]+dist[j][i];
}
}
[Awson原创]网络(network)的更多相关文章
- Docker 外部访问容器Pp、数据管理volume、网络network 介绍
Docker 外部访问容器Pp.数据管理volume.网络network 介绍 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射. ...
- Unity3d 网络编程(一)(Unity3d内建网络Network介绍)
首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库. RakNet.所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封 ...
- 【csp模拟赛1】铁路网络 (network.cpp)
[题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...
- [Awson原创]修水渠(canal)
Description Awson是某国际学校信竞组的一只菜鸡.他们班主任F老师喜欢带他们去爬爬唷喽山.登顶后,Awson有了个奇怪的发现. 山腰上有N(1<=N<=100)个村庄,这些村 ...
- [Awson原创]洪水(flood)
Description Awson是某国际学校信竞组的一只菜鸡.今年,该市发生了千年难遇的洪水.被监禁在学校的Awson不甘怠堕,想将自己投入到公益服务事业中去.这天,他偷了H老师的小电驴,偷偷地溜出 ...
- 关于Chrome谷歌浏览器开发者工具网络Network中返回无数据的问题
1.如图所示,对于有些js文件,响应中无返回数据,Failed to load response data,当然本来是应该有数据,你用火狐浏览器看,就是有的,或者直接在浏览器地址栏里输入url,也可以 ...
- Ubuntu网络network eth0配置 | ubuntu network configuration
本文首发于个人博客https://kezunlin.me/post/5076bc45/,欢迎阅读! ubuntu network configuration Guide network proxy S ...
- Uva 网络(Network,Seoul 2007,LA 3902)
#include<iostream> #include<cstring> #include<vector> using namespace std; +; int ...
- [ZJOI2012][bzoj 2816] 网络 network [LCT]
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2816 思路: 第一个条件看完暂时还没什么想法 看完第二个,发现每一个颜色都是一个森林 进而想 ...
随机推荐
- 201621123060《JAVA程序设计》第一周学习总结
1.本周学习总结 1.讲述了JAVA的发展史,关于JDK.JRE.JVM的联系和区别 2.JDK是用JAVA开发工具.做项目的关键.JRE是JAVA的运行环境(JAVA也是JAVA语言开发的).JVM ...
- vue2 前端搜索实现
项目数据少的时候,搜索这样的小事情就要交给咱们前端来做了,重要声明,适用于小项目!!!!! 其实原理很简单,小demo是做搜索市区名称或者按照排名搜索. <div> <input t ...
- 一个C&C++程序的生命历程
翻了好多博客,内容星星点点,没找到我想要的,现在吸取大神精华,加上本人拙见,总结如下: 一个C或C++程序从你开始编写,到结束,整个过程,都做了些什么,请看下文: 先看大体的过程:看图: 我在这里主要 ...
- Spring Boot jar包linux服务器部署
Spring Boot 部署 一.使用命令行java -jar 常驻 nohup java -jar spring-boot-1.0-SNAPSHOT.jar > log.file 2>& ...
- VS2013 重装 无法打开项目
今天遇到的奇葩BUG,耗时我一下午,现在跟大家说道说道. 今天重装系统,让各种开发环境开发工具自然要重装一次,最后装完VS2013,然后刚好客户打电话要改点东西,然后我就双击项目准备打开改,然后奇葩来 ...
- JAVA_SE基础——编码规范&代码编写规则
这次我来给大家说明下编码规范&代码编写规则 ↓ 编码规范可以帮助程序员在编程时注意一些细节问题,提高程序的可读性,让程序员能够尽快地理解新的代码,并帮助大家编写出规范的利于维护的Java代码 ...
- gradle入门(1-8)gradle 的依赖查看、依赖排除和指定版本(需要验证!)
一.依赖查看 gradle dependencies 在gradle dependencies输出会有如下几种标记: 1.版本 : 唯一的依赖. 2.版本():还存在该库其他版本的依赖或者间接依赖,并 ...
- java stream 原理
java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字,然后从中选 ...
- python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块
一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...
- pthon/零起点(一、集合)
pthon/零起点(一.集合) set( )集合,集合是无序的,集合是可变的,集合是可迭代的 set()强型转成集合数据类型 set()集合本身就是去掉重复的元素 集合更新操作案列: j={1,2,3 ...