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. pyc反编译-uncompyle2的安装及使用

    pyc反编译-uncompyle2的安装及使用 0x00 安装 1.下载并解压到安装目录 python setup.py install //安装 2.下载链接: 链接:https://pan.bai ...

  2. JavaScript(第七天)【对象和数组】

    什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种 ...

  3. SDVN

    Software Defined Vehicular Networks VANET 车载自组网(VANET)是指在交通环境中车辆之间.车辆与固定接入点之间及车辆与行人之间相互通信组成的开放式移动Ad ...

  4. io多路复用(一)

    sever端 1 import socket sk1 = socket.socket() sk1.bind(('127.0.0.1',8001,)) sk1.listen() sk2 = socket ...

  5. 第一周-JAVA基本概念

    1. 本周学习总结 本周学习内容: 1.JAVA的发展 2.JDK,JVM,JRE, 3.掌握JAVA的组成结构 4.掌握使用简单的编译器写javac与java命令, 关键概念之间的联系: JVM:将 ...

  6. js中多维数组转一维

    法一:使用数组map()方法,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组. var arr = [1,[2,[[3,4],5],6]]; function unid(arr){ v ...

  7. MongoDb进阶实践之三 MongoDB查询命令详述

    一.引言           上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命 ...

  8. AngularJS1.X学习笔记7-过滤器

    最近参加笔试被虐成狗了,感觉自己的算法太弱了.但是还是先花点事件将这个AngularJS学习完.今天学习filter 一.内置过滤器 (1)过滤单个数据值 <!DOCTYPE html> ...

  9. hadoop大数据技术架构详解

    大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战.Hadoop作为一个开源的分布式并行处理平台,以其高拓展.高效率.高可靠等优点越来越受到欢迎.这同时也带动了 ...

  10. Mysql主从复制架构实战

    [root@Mysql-master ~]# vim /etc/my.cnf log-bin=mysql-bin server-id = 1  #slave端server-id值改成2 mysql&g ...