[SOJ] 导游

Description

Mr. G. 在孟加拉国的一家旅游公司工作。他当前的任务是带一些游客去一些遥远的城市。和所有国家一样,一些城市之间有双向道路。每对相邻城市之间都有一条公交路线,每条路线都规定了自己的最大乘客数目。Mr. G. 有一份包含城市间道路状况和公交车最大载客量的地图。
往往无法一次性地将所有乘客带往目的地。例如,在下面7个城市的地图中,边代表道路,每条边上的数字代表这条道路上公交车的最大载客量。

如果Mr. G. 要将99位乘客从城市1带到城市7,则至少要往返5次(他必须陪同每一群乘客)。最佳路线是1-2-4-7。

初始: 1(99) 2(0) 4(0) 7(0)

第1次往返后:1(75) 2(0) 4(0) 7(24)

第2次往返后:1(51) 2(0) 4(0) 7(48)

第3次往返后:1(27) 2(0) 4(0) 7(72)

第4次往返后:1(3) 2(0) 4(0) 7(96)

第5次往返后:1(0) 2(0) 4(0) 7(99)

Input

第一行为一个整数t,表示测试用例个数。 每组数据的第一行有两个整数N(N≤100)和R(R≤4950),分别表示城市的数量和道路的数量。接下来的R行每行有3个整数(C1,C2,P),其中C1和C2为城市编号,P(1<P<10000)是该道路上公交车的最大载客量。各城市编号为1~N的连续整数。第R+1行包含3个整数(S,D,T),分别表示出发城市,目的城市的编号和游客的数量(1<T<100000)。保证两个城市间最多只有一条道路。

Output

对于每组输入数据,输出最少的往返次数。

Sample Input

 Copy sample input to clipboard

1
7 10
1 2 30
1 3 15
1 4 10
2 4 25
2 5 60
3 4 40
3 6 20
4 7 35
5 7 20
6 7 30
1 7 99

Sample Output

5
#include<iostream>
#include<algorithm>
using namespace std;

const int MAX = 105;
const int INF = -1;
int n, r;
int edge[MAX][MAX];

void init()
{
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<n;j++)
      edge[i][j]=INF;
    edge[i][i]=0;
  }
}

int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    cin>>n>>r;
    int a, b, x;

    init();

    for(int i=0;i<r;i++)
    {
      cin>>a>>b>>x;
      edge[a][b]=x;
      edge[b][a]=x;
    }

    for(int k=1;k<=n;k++)
      for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
           edge[i][j]=max(edge[i][j],min(edge[i][k], edge[k][j]));
        }

    int s, e, p;
    cin>>s>>e>>p;

    cout<<p/(edge[s][e]-1)+(p%edge[s][e]?1:0)<<endl;
  }

  return 0;
}

  

时间: 2024-11-04 19:21:14

[SOJ] 导游的相关文章

SOJ 4445 2015四川省赛模拟题

背景:赛场上就是因为没开这道题,而没拿到银,回来A了,感觉代码能力还是很弱,一定要先想好再敲,而且注重代码的函数化,这样无论是观感,还是调试都要好很多,逻辑要清晰,看代码要仔细,提交之前通读代码. 题意:起点在原点的frog,开始向右运动,且碰到障碍物就右转,问转多少次? 思路:关键是图的大小范围是109,无法存下,只有用类似链表的方法来存图.这里用了两个容器,一个以X为基准,一个一Y为基准,这两个容器设置很特殊,是为了满足题中特殊的查询需要:查询前进方向最近障碍物. 我的代码: #includ

VR旅游要爆火?先倒霉的是导游还是出行平台

VR的火爆显而易见,无论是高高在上的巨头,还是初创业的"小虾米",都想在VR行业分一杯羹.无论是硬件,还是内容,都不乏参与者.但看多了各种包装地光鲜亮丽的VR软硬件和概念,却不得不承认一个事实:目前的VR行业依然只是虚火旺盛,实质不足. 不过总是会有抢跑的,相比VR电影.VR购物.VR眼镜等,VR旅游看起来有爆火的节奏.而在爆火之后,最先倒霉的是导游行业还是出行平台? VR旅游爆火!内容成关键 5月底,嘉峪关君和国际旅行社联手上海抓马数字科技有限公司,在嘉峪关市成立全国第一家线下&qu

校园导游系统(C++实现,VC6.0编译,使用EasyX图形库)

//校园导游系统.cpp 1 #include <graphics.h> 2 #include <conio.h> 3 #include <stdio.h> 4 #include <io.h> 5 #include <stdlib.h> 6 #include <string> 7 #include <iostream> 8 #include <math.h> 9 #include <fstream>

soj 1015 Jill&#39;s Tour Paths 解题报告

题目描述: 1015. Jill's Tour Paths Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Every year, Jill takes a bicycle tour between two villages. There are different routes she can take between these villages, but she does have an upper limit

SOJ 1051 Biker&#39;s Trip Odometer

题目大意:多组测试样例,每组测试样例输入3个数,第一个表示车轮的直径(浮点型,单位英寸),第二个表示车轮的转数(整型),第三个表示花费的时间(浮点型,单位秒). 求解车轮的总路程(单位:英里)和平均速度(单位:英里/每小时). 以"Trip #: distance MPH"的格式输出. 当转数输入为零时,结束程序. 解题思路:本题主要考察单位的转化,具体的转化系数在题目中有给出.求车轮周长的π是3.1415927. 先将直径的英寸单位转化为英里单位,将时间的秒单位转化为小时. 代码如下

soj 1034 Forest_求树的深度和宽度

题目链接 题意:给你n个节点,m条边,每条边是有向的,这颗树不能有自环,问这颗树的深度和宽度 思路: 不合法情况 1,入度大于1,即存在两条指向同一顶点的边 2,一条入点和出点都相同的边 3,一条变得入点和出点深度已知,但不符合出点的深度是入点的深度加1 4,点入深度未知但出点深度已知 5,遍历完以后,有顶点未遍历,说明有多个根 树的宽度是指,同一层最多有多少个节点 #include <iostream> #include<cstdio> #include<cstring&g

kali2.0导游指南

Kali2.0导游指南 关于kali使用前的一些配置,网上有很多版本,但是几乎都很雷同,或者是不全,或者是根本就没有测试过,或者是有的方法是错的(换句话说是版本变化的差异),因此让很多人接触kali时百度无数,效果一般,浪费不少时间.如今都已经2.0版本了,不,准备说是kali滚动更新版了,因此我总结了我自己在搭建kali(硬盘安装)的最新方法,以及可能出现的问题的解决方案,力求给大家一个最新的,最接近正确配置的kali过程,如有不妥或者其他想法欢迎指出,或者互相交流([email protec

Soj题目分类

-----------------------------最优化问题------------------------------------- ----------------------常规动态规划  SOJ1162 I-Keyboard  SOJ1685 Chopsticks SOJ1679 Gangsters SOJ2096 Maximum Submatrix  SOJ2111 littleken bg SOJ2142 Cow Exhibition  SOJ2505 The County

SOJ 1151. 魔板

题目大意:和soj 1150题目大意差不多,不过数据规模变大了,n可能大于10. 解题思路:在1150的基础上作修改,修改状态重复判断的方式.以前是:扫描整个队列,查重:现在是:引入set集合,每个元素只记录up和down的值,进行查重. 代码如下: 1 #include <iostream> 2 #include <vector> 3 #include <string> 4 #include <set> 5 using namespace std; 6 7