题意

给定一些国家,和两个国家间的花费,现在有一些询问,询问每次最多转k次飞机,最小花费

分析

最短路的裸题,跑spfa或者dijsktra什么的都行

多开一维来记录转k次飞机时的最短路是什么(拆点?)

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
#include <queue> using namespace std;
const int maxn=+;
const int maxm=+;
const int INF=;
int T,m,n,sz,q;
map<string,int>name;
string num[maxn];
string s;
int d[maxn][maxn];
int vis[maxn][maxn];
int head[maxn],to[maxm],val[maxm],ecnt,Next[maxm];
struct Node{
int u,cnt;
};
void spfa(int s){
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
for(int j=;j<=n+;j++)
d[i][j]=INF;
d[s][]=;
vis[s][]=;
queue<Node>q;
q.push((Node){s,});
while(!q.empty()){
Node x=q.front();q.pop();
int u=x.u,cnt=x.cnt;
vis[u][cnt]=;
for(int i=head[u];i;i=Next[i]){
int v=to[i];
if(d[v][cnt+]>d[u][cnt]+val[i]){
d[v][cnt+]=d[u][cnt]+val[i];
if(!vis[v][cnt+]){
vis[v][cnt+]=;
q.push((Node){v,cnt+});
}
}
}
}
}
void add_edge(int a,int b,int w){
ecnt++;
to[ecnt]=b;
val[ecnt]=w;
Next[ecnt]=head[a];
head[a]=ecnt;
}
int main(){
//freopen("out.txt","w",stdout);
scanf("%d",&T);
for(int t=;t<=T;t++){
if(t!=)printf("\n");
memset(head,,sizeof(head));
printf("Scenario #%d\n",t);
sz=;
ecnt=;
scanf("%d",&n);
for(int i=;i<=n;i++){
cin>>s;
sz++;
name[s]=sz;
num[sz]=s;
}
scanf("%d",&m);
for(int i=;i<=m;i++){
string a,b;
int w;
cin>>a>>b>>w;
add_edge(name[a],name[b],w);
}
spfa(); scanf("%d",&q);
int a;
for(int i=;i<=q;i++){
scanf("%d",&a);
int ans=INF;
for(int j=;j<=min(a,n);j++){
ans=min(ans,d[n][j+]);
}
if(ans>=INF){
printf("No satisfactory flights\n");
}else
printf("Total cost of flight(s) is $%d\n",ans);
}
}
return ;
}

UVA-11280 Flying to Fredericton的更多相关文章

  1. UVA 11280 - Flying to Fredericton SPFA变形

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&c ...

  2. UVa 11280 Flying to Fredericton (DP + Dijkstra)

    题意:给出n(2<=n<=100)个城市之间的m(0<=m<=1000)条航线以及对应的机票价格,要求回答一些询问,每个询问是给出最大停留次数S,求从其实城市Calgary到终 ...

  3. UVA-11280 Flying to Fredericton (dijkstra)

    题目大意:一张有向图,n个节点,m条边,有边权.求从起点到终点在最多经过s个中间节点(不包括始末点)时的最小权和. 题目分析:因为起点和终点是固定的,只需一次dijkstra打出表dis[u][k], ...

  4. 【Uva 11280 飞到弗雷德里顿】

    ·你可以尽情地坐飞机,但停留次数遭到限制. ·英文题,述大意:       给出一张有向图,起点是输入的第一个城市,终点是输入的最后一个城市.给出q个询问,每个询问含一个t,表示 #include&l ...

  5. 1.1.1最短路(Floyd、Dijstra、BellmanFord)

    转载自hr_whisper大佬的博客 [ 一.Dijkstra 比较详细的迪杰斯特拉算法讲解传送门 Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkstra常常作为其他算 ...

  6. 最短路算法详解(Dijkstra/SPFA/Floyd)

    新的整理版本版的地址见我新博客 http://www.hrwhisper.me/?p=1952 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkst ...

  7. UVA 590 二十一 Always on the run

     Always on the run Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit ...

  8. UVA - 10057 A mid-summer night&#39;s dream.

    偶数时,中位数之间的数都是能够的(包含中位数) 奇数时,一定是中位数 推导请找初中老师 #include<iostream> #include<cstdio> #include ...

  9. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

随机推荐

  1. JAVA并发全景图1.1版本

    感谢微信群"Spring Boot那些事"兄弟们的热心整理和总结

  2. MySQL 进入 导入

    命令行进入时 不能用 ‘;’ 结尾

  3. Java进阶面试问题列表

    面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...

  4. Flash Builder 4.6配置ASDoc

    ASDoc是Adobe自带的文档生成工具.可以生成类似JavaDoc格式的文档. 关于ASDoc详情参见官方文档: http://help.adobe.com/zh_CN/flex/using/WSd ...

  5. 核PCA投影平面公式推导

    样本方差推导 样本方差公式\[S = \frac{1}{n-1}\sum_{i=1}^n(x_i-\mu_i)^2\] 扩展开来得到\[S = \frac{1}{n-1}[(X-\frac{1}{n} ...

  6. python3 chromeDriver 安装与配置

    1. 准备工作 在这之前请确保已经正确安装好了Chrome浏览器并可以正常运行,安装过程不再赘述. 2. 查看版本 点击Chrome菜单"帮助"→"关于Google Ch ...

  7. 窗口玻璃特效,半透明窗口,使用DWM实现Aero Glass效果

    转自:http://blog.csdn.net/ntwilford/article/details/5656633 从Windows Vista开始,Aero Glass效果被应用在了Home Pre ...

  8. ACM学习历程—Codeforces Round #354 (Div. 2)

    http://codeforces.com/contest/676 在allzysyz学弟和hqwhqwhq的邀请下,打了我的第三场CF... 毕竟在半夜..所以本来想水到12点就去睡觉的...结果一 ...

  9. AtCoder Grand Contest 017 迟到记

    晚上去操场上浪. 回来以后看到好几个人开着 \(AtCoder\) 在打代码. ... ... 今天有 \(AtCoder\) 比赛 ? 管它呢, \(Kito\) 在切西瓜,先吃西瓜... 然后看 ...

  10. php无wsdl webservice服务用法

    服务端: <?php class test { function add($a,$b) { return $a+$b; } } function getUserInfo($name) { ret ...