floyd类型题UVa-10099-The Tourist Guide +Frogger POJ - 2253
The Tourist Guide
Mr. G. works as a tourist guide. His current assignment is to take some tourists from one city to another. Some two-way roads connect the cities. For each pair of neighboring cities there is a bus service that runs only between those two cities and uses the road that directly connects them. Each bus service has a limit on the maximum number of passengers it can carry. Mr. G. has a map showing the cities and the roads connecting them. He also has the information regarding each bus service. He understands that it may not always be possible for him to take all the tourists to the destination city in a single trip. For example, consider the following road map of 7 cities. The edges connecting the cities represent the roads and the number written on each edge indicates the passenger limit of the bus service that runs on that road.

Now, if he wants to take 99 tourists from city 1 to city 7, he will require at least 5 trips and the route he should take is : 1 - 2 - 4 - 7. But, Mr. G. finds it difficult to find the best route all by himself so that he may be able to take all the tourists to the destination city in minimum number of trips. So, he seeks your help.
Input
The input will contain one or more test cases. The first line of each test case will contain two integers: N (N ≤ 100) and R representing respectively the number of cities and the number of road segments. Then R lines will follow each containing three integers: C1, C2 and P. C1 and C2 are the city numbers and P (P > 1) is the limit on the maximum number of passengers to be carried by the bus service between the two cities. City numbers are positive integers ranging from 1 to N. The (R + 1)-th line will contain three integers: S, D and T representing respectively the starting city, the destination city and the number of tourists to be guided. The input will end with two zeroes for N and R.
Output
For each test case in the input first output the scenario number. Then output the minimum number of trips required for this case on a separate line. Print a blank line after the output of each test case.

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=;
#define inf 0x3f3f3f3f
int e[N][N];
//int n; //void init(int nn)
//{
// for(int i=1; i<=nn; i++)
// {
// for(int j=1; j<=nn; j++)
// {
// if(i==j)
// e[i][j]=0;
// else
// e[i][j]=inf;
// }
// }
//} int main()
{
int n,m;
int tt=;
while(~scanf("%d %d",&n,&m))
{
// init(n);
if(n==&&m==)
break;
memset(e,,sizeof(e));
int aa,bb,cc;
for(int i=; i<=m; i++)
{
scanf("%d %d %d",&aa,&bb,&cc);
e[aa][bb]=e[bb][aa]=cc-;
// e[aa][bb]=e[bb][aa]=cc;
}
for(int k=; k<=n; k++)
{
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
// if(e[i][j]!=inf&&e[i][k]!=inf&&e[k][j]!=inf)
// e[i][j]=max(e[i][j],e[i][k]+e[k][j]);
e[i][j]=max(e[i][j],min(e[i][k],e[k][j]));
}
}
}
// int tt=1;
// cout<<e[1][7]<<"***"<<endl;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int ans=(c-)/e[a][b];
// int ans=c/(e[a][b]-1);
if((c-)%e[a][b]!=)
// if(c%e[a][b]!=0)
ans++;
// ans=ans*2-1;
printf("Scenario #%d\n",tt++);
printf("Minimum Number of Trips = %d\n\n",ans);
}
return ;
}
Frogger
Unfortunately Fiona's stone is out of his jump range. Therefore Freddy considers to use other stones as intermediate stops and reach her by a sequence of several small jumps.
To execute a given sequence of jumps, a frog's jump range obviously must be at least as long as the longest jump occuring in the sequence.
The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones.
You are given the coordinates of Freddy's stone, Fiona's stone and all other stones in the lake. Your job is to compute the frog distance between Freddy's and Fiona's stone.
Input
Output
Sample Input
2
0 0
3 4 3
17 4
19 4
18 5 0
Sample Output
Scenario #1
Frog Distance = 5.000 Scenario #2
Frog Distance = 1.414
#include<iostream>
#include<string.h>
#include<cmath>
#include<iomanip>
#define inf 0x3f3f3f3f
using namespace std; //点点之间的距离floyd
//找a-b所有路径中最大步数里面最小的
struct edge
{
// double x;
// double y;
int x;
int y;
} e[]; double a[][];
int n; double d(int x1,int y1,int x2,int y2)
{
return sqrt(((x2-x1)*(x2-x1)*1.0+(y2-y1)*(y2-y1)*1.0)*1.0);
} void init()
{
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(i==j)
a[i][j]=;
else
a[i][j]=inf;
}
}
} int main()
{
std::ios::sync_with_stdio(false);
cin.tie();
cout.tie();
int tt=;
while(cin>>n)
{
if(n==)
break;
memset(e,,sizeof(e));
memset(a,,sizeof(a));
init();
for(int i=; i<=n; i++)//n个顶点
cin>>e[i].x>>e[i].y; // p=1;//p条边 for(int i=; i<=n; i++)
{
for(int j=i+; j<=n; j++)
{
// addedge[p++]=d(e[i].x,e[i].y,e[j].x,e[j].y); double dd=d(e[i].x,e[i].y,e[j].x,e[j].y);
if(a[i][j]>dd||a[j][i]>dd)
{
a[j][i]=a[i][j]=dd;
}
}
}
// sort(addedge+1,addedge+p+1,cmp1);
for(int k=;k<=n;k++)
{
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
//if(a[i][j]a[i][k]+a[k][j])
a[i][j]=min(a[i][j],max(a[i][k],a[k][j]));
}
}
}
double dis=a[][];
cout<<"Scenario #"<<tt++<<endl;
cout<<"Frog Distance = ";
cout<<setiosflags(ios::fixed)<<setprecision()<<dis<<endl<<endl;
}
return ;
}
floyd类型题UVa-10099-The Tourist Guide +Frogger POJ - 2253的更多相关文章
- [uva] 10099 - The Tourist Guide
10099 - The Tourist Guide 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...
- UVa10099_The Tourist Guide(最短路/floyd)(小白书图论专题)
解题报告 题意: 有一个旅游团如今去出游玩,如今有n个城市,m条路.因为每一条路上面规定了最多可以通过的人数,如今想问这个旅游团人数已知的情况下最少须要运送几趟 思路: 求出发点到终点全部路其中最小值 ...
- leetcode 字符串类型题
1,Vaild Palindrome bool isPalindrome(string& s) { transform(s.begin(), s.end(), s.begin(), tolow ...
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
UVa和POJ都有这道题. 不同的是UVa要求区分单复数,而POJ不要求. 使用STL做会比較简单,这里纯粹使用指针做了,很麻烦的指针操作,一不小心就错. 调试起来还是很费力的 本题理解起来也是挺费力 ...
- hdu 2987最大权闭合图模板类型题
/* 最大权闭合图模板类型的题,考验对知识概念的理解. 题意:如今要辞退一部分员工.辞退每个员工能够的到一部分利益(能够是负的),而且辞退员工,必须辞退他的下属.求最大利益和辞退的最小人数. 最大权闭 ...
- 思维题 UVA 10881 Piotr's Ants
题目传送门 /* 题意:在坐标轴上一群蚂蚁向左或向右爬,问经过ts后,蚂蚁的位置和状态 思维题:本题的关键1:蚂蚁相撞看作是对穿过去,那么只要判断谁是谁就可以了 关键2:蚂蚁的相对位置不变 关键3:o ...
- 贪心/思维题 UVA 11292 The Dragon of Loowater
题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...
- 纯几何题 --- UVA - 11646 Athletics Track
这一题题目有点坑,注意这句话: 这代表了其圆心就是矩形的中心! 然后就可以推公式: 可知: x = 200/(a+2atan(b/c)*r); r = sqrt(a*a + b*b); 所以有AC代码 ...
- leetcode 链表类型题总结
链表测试框架示例: // leetcodeList.cpp : 定义控制台应用程序的入口点.vs2013 测试通过 // #include "stdafx.h" #include ...
随机推荐
- ES6 Sybol属性
Symbol: 概念:ES6中的添加了一种原始数据类型symbol(已有的原始数据类型:String, Number, boolean, null, undefined, 对象) 特点: 1.Symb ...
- gitj基础2
回滚版本 git reset --hard HEAD^ 回滚上一个版本 git reset --hard 版本号(或者版本号前6位) 回滚到指定版本 如果修改版本了,也关 ...
- MTT学习小记
这是个毒瘤题才有的毒瘤东西--奶一口NOI不考 拆系数FFT: 考虑做NTT时模数不是NTT模数(\(2^a*b+1\))怎么办? 很容易想到拆次数FFT. 比如说现在求\(a*b\),设\(m=\s ...
- MetalLB自建私有Kubernetes的LoadBalancer负载均衡类型服务
简介 在私有网络上运行 Kubernetes,和御三家相比,对 LoadBalancer 类型的服务的支持应该是众多表面差异中最醒目的一个了.类型为 LoadBalancer 的服务在 Kuberne ...
- Nmap扫描与Tcpdump抓包分析
扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用EtterCAP截获明文通信的密码.检测非加密通 ...
- NX二次开发-UFUN终止UF_terminate
在调用UFUN函数时必须加Uf.h头文件,代码开头和结尾加UF_initialize和UF_terminate NX9+VS2012 #include <uf.h> #include &l ...
- NX二次开发-C++的vector用法
#include <algorithm> //vector排序去重 sort( BoxNum.begin(), BoxNum.end()); BoxNum.erase(unique(Box ...
- px2rem-loader(Vue:将px转化为rem,适配移动端)
转载:https://www.cnblogs.com/WQLong/p/7798822.html 1.下载lib-flexible 使用的是vue-cli+webpack,通过npm来安装的 npm ...
- c语言NULL和0区别及NULL详解
先看下面一段代码输出什么: #include<stdo.h> int main() { int *p=NULL; printf("%s",p); } 输出<n ...
- 最常见VC++编译错误信息集合
1.fatal error C1010: unexpected end of file while looking for precompiled header directive. 寻找预编译头文件 ...