题目描述

网络的高效互联与智能传输是提升海量用户服务请求映射效率的重要措施。在这个任务中,你需耍在最小的传输时间内,将数据源传输到指定的网络节点中。
我们给定的网络一共包含N个节点,其中节点1为数据源。网络中有M条无向边(u,v,w),表示一条传输线连接节点u和节点v,且数据通过这条传输线的时间为 w。我们一共会给定K个目标节点,节点1只会发送一次数据,你要计算出该数据从节点1传送到所有K个节点所需耍的最短时间。目标节点可以按任意顺序进行传送,数据可以多次经过同一节点。

 

输入

输入数据第一行足一个整数T (T<= 5),表示测试数据的组数。
对于毎组测试数据:
第一行三个正整数N, M, K 
分别表示节点数,边数和目标节点数,
接下来M行,毎行三个数(u,v,w)如上所述给出毎条传输线。
M后一行是K个整数,给出所有的目标节点的编号。所有节点的编号都在 1到N之间。

 

输出

对于毎组测试数据,输出数据传送到所有K 标节点的最短时间。

样例输入

2
3 2 2
1 3 1
1 2 3
2 3
6 6 4
1 5 1
5 6 2
2 1 20
2 3 5
3 4 5
6 3 1
2 3 4 6

样例输出

5
19

提示

在第一组样例屮,最短路线是:1->3->1->2。

在第二组样例屮,最短路线是:1->5->6->3->2->3->4,或者1->5->6-> 3 -> 4 -> 3 -> 2

来源

2014网研D题

思路是floyd + 全排列 交上去Runtime Error,没有发现问题有人发现问题的话求告知┭┮﹏┭┮

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
#define max 5000
#define INF 0x3f3f3f3f
int d[max][max],min_road=INF,now=;
int V;
void floyd()
{
for(int k=;k<V;k++)
for(int i=;i<V;i++)
for(int j=;j<V;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
void permutation(char* pszStr,int k,int m)
{
int i,j;
if(k == m)
{
int lable,outprint=,lb;
for(int i=;i<=m;i++)
{
lb=pszStr[i]-'';
if(lb==)
continue;
outprint+=d[now][lb];
now=lb;
}
if(outprint<min_road)
{
min_road=outprint;
}
now=;
}
else
{
for(j=k;j<=m;j++)
{
swap(pszStr[j],pszStr[k]);
permutation(pszStr,k+,m);
swap(pszStr[j],pszStr[k]);
}
}
}
int main()
{
int a,nn,mm,kk,num;
while(~scanf("%d",&a))
{
while(a--)
{
cin>>V>>mm>>kk;
for(int i=;i<V;i++)
{
for(int j=;j<V;j++)
{
if(i==j)
d[i][j]=;
else
d[i][j]=INF;
}
}
while(mm--)
{
int x,y,z;
cin>>x>>y>>z;
d[x-][y-]=z;
d[y-][x-]=z;
}
floyd();
char szTextStr[max];
for(int j=;j<kk;j++)
{
char t;
cin>>t;
szTextStr[j]=t-;
}
szTextStr[kk]='\0';
permutation(szTextStr,,strlen(szTextStr)-);//全排列算法
cout<<min_road<<endl;
min_road=INF;
now=;
}
}
return ;
}

BUPT复试专题—网络传输(2014网研)的更多相关文章

  1. BUPT复试专题—进程管理(2014网研)

    题目描述 在操作系统中,进程管理是非常重要的工作.每个进程都有唯一的进程标识PID.每个进程都可以启动子进程,此时我们称该它本身是其子进程的父进程.除PID为0的进程之外,每个进程冇且只冇一个父进程. ...

  2. BUPT复试专题—分数加法(2014网研)

    题目描述 求2^-a + 2^-b,其中a和b均为正整数,结果用最简分数表示 输入 第一行为测试数据的组数T (1~400).请注意,任意两组测试数据之间相互独立的.每组测试数据一行,包含两个整数a和 ...

  3. BUPT复试专题—网络的核(2014)

    题目描述 给定一个无向网络G,共有N个节点(1到N),M条边,求网络的核. 网络的核:到网络中其他节点距离之和最小的节点,且对于不连通的两点,他们之间的距离为N,若有多组解,输出编号最小的节点 输入 ...

  4. BUPT复试专题—数据库检索(2014软院)

    题目描述 在数据库的操作过程中,我们进场会遇到检索操作.这个题目的任务是完成一些特定格式的检索,并输出符合条件的数据库中的所有结果. 我们现在有一个数据库,维护了学生的姓名(Name),性别(Sex) ...

  5. BUPT复试专题—奇偶求和(2014软件)

    题目描述 给出N个数,求出这N个数,奇数的和以及偶数的和. 输入 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据之间是相互独立的. 每组数据包括两行: 第一行为一个 ...

  6. BUPT复试专题—Python List(2014)

    题目描述 在Python中,List (列表)是一种非常重要的数据结构.它与C/C++/Java中的 数组有些类似,但支持添加新元素时的动态扩展.在这个问题中,你需要处理如下 的几种对List的操作. ...

  7. BUPT复试专题—最近公共祖先(2014软院)

    题目描述 给出一棵有N个节点的有根树TREE(根的编号为1),对于每组查询,请输出树上节点u和v的最近公共祖先. 最近公共祖先:对于有向树TREE的两个结点u,v.最近公共祖先LCA(TREE u,v ...

  8. BUPT复试专题—最长连续等差子数列(2014软院)

    题目描述   给定-个长度为N的整数数列,你需要在其中找到最长的连续子数列的长度, 并满足这个子数列是等差的.注意公差小于或等于0的情况也是允许的. 输入 第一行为数据组数T(1~100),表示测试数 ...

  9. BUPT复试专题—旋转图像(2014)

    题目描述 将一幅只含有01像素点的图片进行顺时针旋转,旋转的角度仅包含0°,90°,180°,270° 输入 第一行一个整数T(<50)表示输入的组数 每组测试数据第一行是两个整数N和M(< ...

随机推荐

  1. Linux 永久修改主机名hostname

    前言: 由于最近用3台机器,经常切换导致有容易区别的需求. 故想修改主机名. 实验环境:Ubuntu 17 教程: 1. 使用hostname 命令先临时修改 sudo hostname your_n ...

  2. python安装mysql-connector出错

    windows 7环境 1.进入命令行执行以下命令: C:\Users\Administrator>pip install mysql-connector 注:安装下载较慢,直接失败,改用VPN ...

  3. perl学习之:肯定匹配和否定匹配

    tr/ / / 替换操作符不支持正则表达式 也不具备双引号替换能力m/ /  s/ / / 都支持正则表达式,并且可以提供或限制双引号替换能力 $string = "25abc8" ...

  4. 如何修改 WordPress 的默认 Gravatar 头像

    如何修改 WordPress 的默认 Gravatar 头像? wordpress默认的头像是下面这种 在Settings的Discussion中,默认选择第一个Mystery Person, 意思是 ...

  5. float.h

    float.h 一背景知识 浮点算术非常复杂   很多小的处理器在硬件指令方面甚至不支持浮点算术   其他的则需要一个独立的协处理器来处理这种运算   只有最复杂的计算机才在硬件指令集中支持浮点运算 ...

  6. 初识LiveScript

        The LiveScript Book 邂逅 LiveScript 就像很多现代化的语言一样,LiveScript 使用缩进来表示语句块,使用换行取代分号来表示一个语句的结束 (如果你想要一行 ...

  7. System.TypeInitializationException

    在连接数据库时,提示System.TypeInitializationException 数据库的连接字符串放在config文件中,而config中有两个文件,起初放在debug.comfig中,启动 ...

  8. cell左右滑动展开更多按钮-MGSwipeTableCell

    MGSwipeTableCell是一个UITableViewCell的子类, 它实现了左,右滑动展开更多按钮用来实现一些相关操作就和QQ好友列表滑动展开的按钮一样,封装的很好,动画效果也处理很到位,废 ...

  9. SPOJ QTREE Query on a tree ——树链剖分 线段树

    [题目分析] 垃圾vjudge又挂了. 树链剖分裸题. 垃圾spoj,交了好几次,基本没改动却过了. [代码](自带常数,是别人的2倍左右) #include <cstdio> #incl ...

  10. mysql 插入replace改变原有数据某些字段

    完整原型:(主要看下面例子) replace into rpt_ci_cinema_seller_shift_dt ( BIZ_DATE,CINEMA_CD,SELLER_CD,LOCATION_CD ...