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

6

Sample Input2

4 1 45 5 5 5 11 5 12 5 13 5 14 5 1

Sample Output2

5

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)的更多相关文章

  1. Docker 外部访问容器Pp、数据管理volume、网络network 介绍

    Docker 外部访问容器Pp.数据管理volume.网络network 介绍 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射. ...

  2. Unity3d 网络编程(一)(Unity3d内建网络Network介绍)

    首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库. RakNet.所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封 ...

  3. 【csp模拟赛1】铁路网络 (network.cpp)

    [题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...

  4. [Awson原创]修水渠(canal)

    Description Awson是某国际学校信竞组的一只菜鸡.他们班主任F老师喜欢带他们去爬爬唷喽山.登顶后,Awson有了个奇怪的发现. 山腰上有N(1<=N<=100)个村庄,这些村 ...

  5. [Awson原创]洪水(flood)

    Description Awson是某国际学校信竞组的一只菜鸡.今年,该市发生了千年难遇的洪水.被监禁在学校的Awson不甘怠堕,想将自己投入到公益服务事业中去.这天,他偷了H老师的小电驴,偷偷地溜出 ...

  6. 关于Chrome谷歌浏览器开发者工具网络Network中返回无数据的问题

    1.如图所示,对于有些js文件,响应中无返回数据,Failed to load response data,当然本来是应该有数据,你用火狐浏览器看,就是有的,或者直接在浏览器地址栏里输入url,也可以 ...

  7. Ubuntu网络network eth0配置 | ubuntu network configuration

    本文首发于个人博客https://kezunlin.me/post/5076bc45/,欢迎阅读! ubuntu network configuration Guide network proxy S ...

  8. Uva 网络(Network,Seoul 2007,LA 3902)

    #include<iostream> #include<cstring> #include<vector> using namespace std; +; int ...

  9. [ZJOI2012][bzoj 2816] 网络 network [LCT]

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2816 思路: 第一个条件看完暂时还没什么想法 看完第二个,发现每一个颜色都是一个森林 进而想 ...

随机推荐

  1. 201621123060《JAVA程序设计》第一周学习总结

    1.本周学习总结 1.讲述了JAVA的发展史,关于JDK.JRE.JVM的联系和区别 2.JDK是用JAVA开发工具.做项目的关键.JRE是JAVA的运行环境(JAVA也是JAVA语言开发的).JVM ...

  2. vue2 前端搜索实现

    项目数据少的时候,搜索这样的小事情就要交给咱们前端来做了,重要声明,适用于小项目!!!!! 其实原理很简单,小demo是做搜索市区名称或者按照排名搜索. <div> <input t ...

  3. 一个C&C++程序的生命历程

    翻了好多博客,内容星星点点,没找到我想要的,现在吸取大神精华,加上本人拙见,总结如下: 一个C或C++程序从你开始编写,到结束,整个过程,都做了些什么,请看下文: 先看大体的过程:看图: 我在这里主要 ...

  4. Spring Boot jar包linux服务器部署

    Spring Boot 部署 一.使用命令行java -jar 常驻 nohup java -jar spring-boot-1.0-SNAPSHOT.jar > log.file 2>& ...

  5. VS2013 重装 无法打开项目

    今天遇到的奇葩BUG,耗时我一下午,现在跟大家说道说道. 今天重装系统,让各种开发环境开发工具自然要重装一次,最后装完VS2013,然后刚好客户打电话要改点东西,然后我就双击项目准备打开改,然后奇葩来 ...

  6. JAVA_SE基础——编码规范&代码编写规则

    这次我来给大家说明下编码规范&代码编写规则  ↓ 编码规范可以帮助程序员在编程时注意一些细节问题,提高程序的可读性,让程序员能够尽快地理解新的代码,并帮助大家编写出规范的利于维护的Java代码 ...

  7. gradle入门(1-8)gradle 的依赖查看、依赖排除和指定版本(需要验证!)

    一.依赖查看 gradle dependencies 在gradle dependencies输出会有如下几种标记: 1.版本 : 唯一的依赖. 2.版本():还存在该库其他版本的依赖或者间接依赖,并 ...

  8. java stream 原理

    java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字,然后从中选 ...

  9. python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块

    一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...

  10. pthon/零起点(一、集合)

    pthon/零起点(一.集合) set( )集合,集合是无序的,集合是可变的,集合是可迭代的 set()强型转成集合数据类型 set()集合本身就是去掉重复的元素 集合更新操作案列: j={1,2,3 ...