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. breeze源码阅读心得

            在阅读Spark ML源码的过程中,发现很多机器学习中的优化问题,都是直接调用breeze库解决的,因此拿来breeze源码想一探究竟.整体来看,breeze是一个用scala实现的基 ...

  2. 第七周PTA作业

    第一题: #include<stdio.h> int main() { ; ; ){ sum=sum+i; i++; } printf("sum = %d\n",sum ...

  3. 听翁恺老师mooc笔记(7)--字符串1

    C语言中字符串的定义 如果定义一个字符数组word,并使用大括号对其初始化,如下图所示: 但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算.那么C语言的字符串长什 ...

  4. Beta第一天

    听说

  5. java实现同步的两种方式

    同步是多线程中的重要概念.同步的使用可以保证在多线程运行的环境中,程序不会产生设计之外的错误结果.同步的实现方式有两种,同步方法和同步块,这两种方式都要用到synchronized关键字. 给一个方法 ...

  6. Python 3.* print 出现SyntaxError: invalid syntax

    很简单,不知道为啥,据说是3.0以后的print都改为了print(); 例如 a=1 print a 上边出错 输入 a=1 print(a) 就正确了

  7. Flask 测试

    测试是每个应用系统发布前必须经历的步骤,自动化测试对测试效率的提高也是毋庸置疑的.对于Flask应用来说,当然可以使用Web自动化测试工具,比如Selenium等来测.Flask官方推荐的自动化测试方 ...

  8. css精简命名

    想写写前言啥的,发现自己是前言无能星人. 简单吐吐槽好了,来到新公司,接手公司之前的项目,我想着也就是改改bug,慢慢来吧,粗略看了看这个项目的代码,目前仅看了html和css样式的,忍不住吐血三升. ...

  9. :after/:before使用技巧

    伪类:after/:before基本使用 div:before{ content:'';//必须要写,没写则伪元素无效 display:; position:''; ... } //在一个div子元素 ...

  10. C# 使用 GDI+ 给图片添加文字,并使文字自适应矩形区域

    需求 需求是要做一个编辑文字的页面.用户在网页端写文字,文字区域是个矩形框,用户可以通过下方的拖动条调节文字大小. 如下图: 提交数据的时候前端传文字区域的左上角和右下角定位给后台.因为前端的字体大小 ...