1. // 题意 : 一个人要去旅行 给你起点和终点 求最少花费 其中花费为经过路径的总费用减去该路径的中的最大花费段
    // 直接搜索 稍微加了个剪枝 主要是数据规模小
    #include <iostream>
  2. #include <map>
  3. #include <algorithm>
  4. #include <queue>
  5. #include <math.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <vector>
  9. using namespace std;
  10. #define MOD 1000000007
  11. #define maxn
  12. map<string,int> mp;
  13. vector <int >V[];
  14. bool visit[];
  15. int rc[][];
  16. char str1[],str2[];
  17. char ss[],ts[];
  18. int s,t;
  19. int ans;
  20. void dfs(int u,int sum,int mx){
  21. // if(u==t) return;
  22. visit[u]=true;
  23. if(sum-mx>ans) return; // 加了个小剪枝
  24. int i,v,ts,tm;
  25. int len=V[u].size();
  26. for(i=;i<len;i++){
  27. v=V[u][i];
  28. if(!visit[v]){
  29. ts=sum+rc[u][v];
  30. tm=max(mx,rc[u][v]);
  31. if(v==t){
  32. ans=min(ans,ts-tm);
  33. return ;
  34. }
  35. dfs(v,ts,tm);
  36. visit[v]=false;
  37. }
  38. }
  39.  
  40. }
  41. int main(){
  42. int m;
  43. int n;
  44. while(scanf("%s %s",ss,ts)!=EOF){
  45. scanf("%d",&m);
  46. int i,val;
  47. int u,v;
  48. n=;
  49. map<string,int>::iterator it;
  50. for(i=;i<m;i++){
  51. scanf("%s %s %d",str1,str2,&val);
  52. it=mp.find(str1);
  53. if(it!=mp.end()){
  54. u= mp[str1];
  55. }
  56. else{
  57. u=n++;
  58. mp[str1]=u;
  59. }
  60. it=mp.find(str2);
  61. if(it!=mp.end()){
  62. v= mp[str2];
  63. }
  64. else{
  65. v=n++;
  66. mp[str2]=v;
  67. }
  68. V[u].push_back(v);
  69. rc[u][v]=val;
  70. }
  71. s=mp[ss];
  72. t=mp[ts];
  73. memset(visit,,sizeof(visit));
  74. ans=MOD;
  75. //printf("%d %d\n",s,t);
  76. dfs(s,,);
  77. printf("%d\n",ans);
  78. mp.clear();
  79. for(i=;i<n;i++)
  80. V[i].clear();
  81. }
  82. }

zoj 2027 Travelling Fee的更多相关文章

  1. Travelling Fee(Dijlstra——最短路问题变型)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2027 题目: Samball is going to trav ...

  2. ZOJ1027 Travelling Fee(DP+SPFA)

    给一张有向无环图,边都有花费,从某点到某点走的那条路径上的那一条花费最多的边可以省掉,问从起点到终点的最少花费的多少, 往DP想的话,就可以写出这个状态dp[u][mx],表示到达u点已经省掉的花费为 ...

  3. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  4. Travelling

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. ZOJ题目分类

    ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  6. HDU-3001 Travelling

    http://acm.hdu.edu.cn/showproblem.php?pid=3001 从任何一个点出发,去到达所有的点,但每个点只能到达2次,使用的经费最小.三进制 Travelling Ti ...

  7. hdu 3001 Travelling (TSP问题 )

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. hdu 3001 Travelling(状态压缩 三进制)

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. Travelling(spfa+状态压缩dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 Travelling Time Limit: 6000/3000 MS (Java/Others ...

随机推荐

  1. oracle中行转列函数

    一.问题描述 有时在“相关子查询中”需要查询某个实体类对应的某个字段有多个值,如果不做行专列查询,会提示返回多个列的错误.例如: 如上图所示,一个组合包,可能对应多个产品,需要你将所对应的多个产品都放 ...

  2. 你真的知道css三种存在样式(外联样式、内部样式、内联样式)的区别吗?

    css样式在html中有三种存在形态: 内联样式:<div style="display: none"></div> 内部样式: <style> ...

  3. matlab字符串操作总结

    matlab字符串操作总结 字符串操作总结 char(S1,S2,…)利用给定的字符串或单元数组创建字符数组double(S)将字符串转化成ASC码形式cellstr(S)利用的给定的字符数组创建字符 ...

  4. 11 个最佳 jQuery 滚动条插件

    通过jQuery滚动条插件,你可以换掉千篇一律的默认浏览器滚动条,让你的网站或web项目更具特色,更有吸引力.本文收集了11款非常漂亮.实用的jQuery滚动条插件,你可以轻松将它们应用在自己的网站中 ...

  5. StringBuffer用法

    public class StringBufferTest { public static void main(String[] args) { StringBuffer sb=new StringB ...

  6. poj 3067 Japan(线段树?,神奇卡时代码,暂未完)

    题目 //暴力的,没什么算法的,被琪琪视为傻逼的代码: //照者学长的神奇幸运卡时代码,虽然能AC,但是中途wa,tle了那么多次,啥也不想说了 //学长威武,能想出sum必须要是—— __int64 ...

  7. android音乐播放器开发教程

    android音乐播放器开发教程 Android扫描sd卡和系统文件 Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能 android操作sdcard中的多媒体文件——音乐列表 ...

  8. Thread的第五天学习

    1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如:卖票系统就可以这么做! package com.thread.demo; publi ...

  9. lintcode 中等题:subSets 子集

    题目 子集 给定一个含不同整数的集合,返回其所有的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], ...

  10. *[topcoder]ChooseTheBestOne

    https://www.topcoder.com/stat?c=problem_statement&pm=13146&rd=15852 // Need carefully calc t ...