题意:每个城市举办庆祝有一定的花费,A在路径上会选择庆祝花费最大的城市

   让你求,A回家所花的路费和庆祝费最少,也就是说并不是最短路径就是结果,

   还有可能就是路费比最短路径的多,但是庆祝费就比它的少,总的加起来可能更小。

思路:枚举每个城市作为庆祝的点,设为x。以x为源点,用dijks求单源路径,路径上如果有大于x庆祝费的点,则不考虑进去。

    求完所有点到x的单源路径后,用两重j、k的for循环,同步更新从j到k所需要的最小花费

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <cstring>
#include <stdio.h>
#include <map>
#include <vector>
using namespace std;
const int maxn=0x3f3f3f3f;int c,r,q;
int c1,c2,d;
int a,b;
int road[101][101];
int feast[101];
int ans[81][81];//ans[i][j]即为询问的答案,表示i到j最少的花费
int dis[81];//当x为庆祝点时,dis[i]表示以第x城市作为举办宴会的地方,i到x之间的最短路径(即花费);
vector<int> link[101];
int vis[81];
int cases=0;
int blank=0;void init(){for(int i=0;i<=c;i++)link[i].clear();memset(road,maxn,sizeof(road));memset(ans,maxn,sizeof(ans));
}
int main()
{while(scanf("%d%d%d",&c,&r,&q)!=EOF){if(c==0 && r==0 && q==0)break;//如果不这样,则最后一个case输出完后会多打一个空格,这也给我wrong answer。。。if(blank)puts("");elseblank=1;cases++;init();for(int i=1;i<=c;i++){scanf("%d",&feast[i]);}for(int i=0;i<r;i++){scanf("%d%d%d",&c1,&c2,&d);road[c1][c2]=d;road[c2][c1]=d;link[c1].push_back(c2);link[c2].push_back(c1);}for(int i=1;i<=c;i++){//以i作为庆祝城市,并且以i作为源点,求单源路径memset(dis,maxn,sizeof(dis));dis[i]=0;memset(vis,0,sizeof(vis));//循环n次,这里我没用优先级队列for(int z=1;z<=c;z++){int mincost=maxn;int idx;for(int k=1;k<=c;k++){if(vis[k]==0){if(dis[k]<mincost && feast[k]<=feast[i]){mincost=dis[k];idx=k;}}}vis[idx]=1;for(int g=0;g<link[idx].size();g++){int v=link[idx][g];if(v!=idx){if(feast[v]<=feast[i] && dis[idx]+road[idx][v]<dis[v]){dis[v]=dis[idx]+road[idx][v];}}}}//每次求完以i为庆祝点的单源路径后,与之前比较,更新ans[j][k]的值,//如果此次,从j到k之间在i点庆祝的花费比之前一次循环中的在i'庆祝的花费要少,则更新for(int j=1;j<=c;j++){for(int k=1;k<=c;k++){if(feast[i]+dis[j]+dis[k]<ans[j][k]){ans[j][k]=feast[i]+dis[j]+dis[k];}}}}printf("Case #%d\n",cases);for(int i=1;i<=q;i++){scanf("%d%d",&a,&b);if(ans[a][b]==maxn){printf("-1\n");}else{printf("%d\n",ans[a][b]);}}//printf("\n");
}return 0;
}

转载于:https://www.cnblogs.com/chenxiwenruo/p/3280551.html

UVA 10246 Asterix and Obelix相关推荐

  1. Asterix and Obelix

    uva10246:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&am ...

  2. uva 10256 The Great Divide

    原题: Somewhere in Gaul, there is a little village very like the village where Asterix and Obelix live ...

  3. 【CodeForces】CF126B Password

    题目地址: https://www.luogu.com.cn/problem/CF126B 题面翻译: Asterix,Obelix和他们的临时伙伴Suffix.Prefix已经最终找到了和谐寺.然而 ...

  4. 2023-01-06做题记录

    牛客网小白月赛65 A-牛牛去购物 题目描述 牛牛带着 n 元钱去超市买东西,超市一共只有两款商品,价格为 a 元的篮球和价格为 b 元的足球,牛牛想把手里的钱尽可能花光,请问牛牛最少能剩多少钱? 输 ...

  5. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  6. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  7. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

  8. UVA 11752 超级幂

    UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  9. UVa 11174 - Stand in a Line

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

  10. UVa 10112 - Myacm Triangles

    UVa第一卷最后一题. 求内部不含点并且面积最大的三角形. 暴力. 代码如下: 1 #include<iostream> 2 #include<cstdio> 3 #inclu ...

最新文章

  1. 网页制作知识:XHTML 和 DOCTYPE 切换
  2. 赠书:Kotlin在Spring Boot中的应用
  3. Matlab:序列分析法MATLAB代码
  4. 请检查网站服务器是否正常.,网站访问不了?如何做自我检查?
  5. linux 查看整个根目录下各个文件占用情况
  6. ASP.NET网站实现多语言版本 【转】
  7. redis php方案,Redis三种部署方案图文详解
  8. centos7系统根目录扩容
  9. C# - Environment类,获取桌面的路径
  10. MATLAB学习笔记(十三)
  11. 阶段3 3.SpringMVC·_05.文件上传_1 文件上传之上传原理分析和搭建环境
  12. Win7 下面升级VS2017 vs_community install Microsoft.Windows.D3DCompiler.Msu.Win7
  13. 通用计算机dsp采用,一种基于FPGA+DSP的通用飞控计算机平台设计
  14. c语言上机字符串,二级C语言上机题库100套(最新)
  15. 嵌入式 h.264中帧与场
  16. 一键调整PCB丝印,超级好用
  17. zookeeper因内存不足造成的CPU占用率高
  18. java基础之String类型
  19. 软件工程复习笔记 类图
  20. SaaS最通俗易懂的解释是什么?看这篇就够了

热门文章

  1. 安卓学习征文 -- 自己定义标题栏
  2. 如何更好地控制input输入框的高度
  3. 任意数字大小写字母的随机数的产生
  4. ThickBox在ASP.NET中的应用
  5. matplotlib.pyplot中API介绍
  6. pyspark 手写Apriori算法
  7. Redis字符串类型的操作
  8. SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)
  9. char *转为pansichar
  10. bzoj4423[AMPPZ2013]Bytehattan