BUPT复试专题—网络传输(2014网研)
题目描述
我们给定的网络一共包含N个节点,其中节点1为数据源。网络中有M条无向边(u,v,w),表示一条传输线连接节点u和节点v,且数据通过这条传输线的时间为 w。我们一共会给定K个目标节点,节点1只会发送一次数据,你要计算出该数据从节点1传送到所有K个节点所需耍的最短时间。目标节点可以按任意顺序进行传送,数据可以多次经过同一节点。
输入
对于毎组测试数据:
第一行三个正整数N, M, K
分别表示节点数,边数和目标节点数,
接下来M行,毎行三个数(u,v,w)如上所述给出毎条传输线。
M后一行是K个整数,给出所有的目标节点的编号。所有节点的编号都在 1到N之间。
输出
样例输入
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
来源
思路是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网研)的更多相关文章
- BUPT复试专题—进程管理(2014网研)
题目描述 在操作系统中,进程管理是非常重要的工作.每个进程都有唯一的进程标识PID.每个进程都可以启动子进程,此时我们称该它本身是其子进程的父进程.除PID为0的进程之外,每个进程冇且只冇一个父进程. ...
- BUPT复试专题—分数加法(2014网研)
题目描述 求2^-a + 2^-b,其中a和b均为正整数,结果用最简分数表示 输入 第一行为测试数据的组数T (1~400).请注意,任意两组测试数据之间相互独立的.每组测试数据一行,包含两个整数a和 ...
- BUPT复试专题—网络的核(2014)
题目描述 给定一个无向网络G,共有N个节点(1到N),M条边,求网络的核. 网络的核:到网络中其他节点距离之和最小的节点,且对于不连通的两点,他们之间的距离为N,若有多组解,输出编号最小的节点 输入 ...
- BUPT复试专题—数据库检索(2014软院)
题目描述 在数据库的操作过程中,我们进场会遇到检索操作.这个题目的任务是完成一些特定格式的检索,并输出符合条件的数据库中的所有结果. 我们现在有一个数据库,维护了学生的姓名(Name),性别(Sex) ...
- BUPT复试专题—奇偶求和(2014软件)
题目描述 给出N个数,求出这N个数,奇数的和以及偶数的和. 输入 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据之间是相互独立的. 每组数据包括两行: 第一行为一个 ...
- BUPT复试专题—Python List(2014)
题目描述 在Python中,List (列表)是一种非常重要的数据结构.它与C/C++/Java中的 数组有些类似,但支持添加新元素时的动态扩展.在这个问题中,你需要处理如下 的几种对List的操作. ...
- BUPT复试专题—最近公共祖先(2014软院)
题目描述 给出一棵有N个节点的有根树TREE(根的编号为1),对于每组查询,请输出树上节点u和v的最近公共祖先. 最近公共祖先:对于有向树TREE的两个结点u,v.最近公共祖先LCA(TREE u,v ...
- BUPT复试专题—最长连续等差子数列(2014软院)
题目描述 给定-个长度为N的整数数列,你需要在其中找到最长的连续子数列的长度, 并满足这个子数列是等差的.注意公差小于或等于0的情况也是允许的. 输入 第一行为数据组数T(1~100),表示测试数 ...
- BUPT复试专题—旋转图像(2014)
题目描述 将一幅只含有01像素点的图片进行顺时针旋转,旋转的角度仅包含0°,90°,180°,270° 输入 第一行一个整数T(<50)表示输入的组数 每组测试数据第一行是两个整数N和M(< ...
随机推荐
- 【php】 给数组重建索引
array_values $a = [1,2]; unset($a[1]); $a[] = 3; print_r($a); // 输出 [0=>1,2=>3]
- 《C/C++工程师综合练习卷》之小试牛刀
第一套练习之感受 刚刚注册了牛客网的账号,准备在此衡量一下水平,好好磨练一番.看到推荐练习<C/C++工程师综合练习卷>,oh,20道题,2个小时.由于木有经验,好一番紧张~ 结果用了20 ...
- PAT Basic 1034
1034 有理数四则运算 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数, ...
- 流编辑器sed知识点总结
sed(流文本编辑器) 每次读取一行到模式空间中, 修改的sed模式空间中的内容,并不会修改源文件, 继而输出模式空间的内容, 最后删除模式空间中的内容. sed [O ...
- 修复Centos7双系统引导
1.进入CentOS系统 2.命令行输入 vi /boot/grub2/grub.cfg 3.在文件空白处添加下列代码 menuentry 'Windows 7'{ insmod part_msdos ...
- 【LeetCode】Jewels and Stones(宝石与石头)
这道题是LeetCode里的第771道题. 题目要求: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝 ...
- BNUOJ 3580 Oulipo
Oulipo Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 3 ...
- 利用pytorch复现spatial pyramid pooling层
sppnet不讲了,懒得写...直接上代码 from math import floor, ceil import torch import torch.nn as nn import torch.n ...
- java面向抽象编程样例
import java.util.*; abstract class Geometry{ public abstract double getArea(); } class Pillar ...
- Kubernetes对象
Kubernetes对象 在之前的文章已经讲到了很多Kubernets对象,包括pod,service,deployment等等.Kubernets对象是一种持久化,表示集群状态的实体.它是一种声明式 ...