zoj 2027 Travelling Fee
- // 题意 : 一个人要去旅行 给你起点和终点 求最少花费 其中花费为经过路径的总费用减去该路径的中的最大花费段
// 直接搜索 稍微加了个剪枝 主要是数据规模小
#include <iostream>- #include <map>
- #include <algorithm>
- #include <queue>
- #include <math.h>
- #include <stdio.h>
- #include <string.h>
- #include <vector>
- using namespace std;
- #define MOD 1000000007
- #define maxn
- map<string,int> mp;
- vector <int >V[];
- bool visit[];
- int rc[][];
- char str1[],str2[];
- char ss[],ts[];
- int s,t;
- int ans;
- void dfs(int u,int sum,int mx){
- // if(u==t) return;
- visit[u]=true;
- if(sum-mx>ans) return; // 加了个小剪枝
- int i,v,ts,tm;
- int len=V[u].size();
- for(i=;i<len;i++){
- v=V[u][i];
- if(!visit[v]){
- ts=sum+rc[u][v];
- tm=max(mx,rc[u][v]);
- if(v==t){
- ans=min(ans,ts-tm);
- return ;
- }
- dfs(v,ts,tm);
- visit[v]=false;
- }
- }
- }
- int main(){
- int m;
- int n;
- while(scanf("%s %s",ss,ts)!=EOF){
- scanf("%d",&m);
- int i,val;
- int u,v;
- n=;
- map<string,int>::iterator it;
- for(i=;i<m;i++){
- scanf("%s %s %d",str1,str2,&val);
- it=mp.find(str1);
- if(it!=mp.end()){
- u= mp[str1];
- }
- else{
- u=n++;
- mp[str1]=u;
- }
- it=mp.find(str2);
- if(it!=mp.end()){
- v= mp[str2];
- }
- else{
- v=n++;
- mp[str2]=v;
- }
- V[u].push_back(v);
- rc[u][v]=val;
- }
- s=mp[ss];
- t=mp[ts];
- memset(visit,,sizeof(visit));
- ans=MOD;
- //printf("%d %d\n",s,t);
- dfs(s,,);
- printf("%d\n",ans);
- mp.clear();
- for(i=;i<n;i++)
- V[i].clear();
- }
- }
zoj 2027 Travelling Fee的更多相关文章
- Travelling Fee(Dijlstra——最短路问题变型)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2027 题目: Samball is going to trav ...
- ZOJ1027 Travelling Fee(DP+SPFA)
给一张有向无环图,边都有花费,从某点到某点走的那条路径上的那一条花费最多的边可以省掉,问从起点到终点的最少花费的多少, 往DP想的话,就可以写出这个状态dp[u][mx],表示到达u点已经省掉的花费为 ...
- 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 / ...
- Travelling
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- ZOJ题目分类
ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...
- HDU-3001 Travelling
http://acm.hdu.edu.cn/showproblem.php?pid=3001 从任何一个点出发,去到达所有的点,但每个点只能到达2次,使用的经费最小.三进制 Travelling Ti ...
- hdu 3001 Travelling (TSP问题 )
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 3001 Travelling(状态压缩 三进制)
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Travelling(spfa+状态压缩dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 Travelling Time Limit: 6000/3000 MS (Java/Others ...
随机推荐
- oracle中行转列函数
一.问题描述 有时在“相关子查询中”需要查询某个实体类对应的某个字段有多个值,如果不做行专列查询,会提示返回多个列的错误.例如: 如上图所示,一个组合包,可能对应多个产品,需要你将所对应的多个产品都放 ...
- 你真的知道css三种存在样式(外联样式、内部样式、内联样式)的区别吗?
css样式在html中有三种存在形态: 内联样式:<div style="display: none"></div> 内部样式: <style> ...
- matlab字符串操作总结
matlab字符串操作总结 字符串操作总结 char(S1,S2,…)利用给定的字符串或单元数组创建字符数组double(S)将字符串转化成ASC码形式cellstr(S)利用的给定的字符数组创建字符 ...
- 11 个最佳 jQuery 滚动条插件
通过jQuery滚动条插件,你可以换掉千篇一律的默认浏览器滚动条,让你的网站或web项目更具特色,更有吸引力.本文收集了11款非常漂亮.实用的jQuery滚动条插件,你可以轻松将它们应用在自己的网站中 ...
- StringBuffer用法
public class StringBufferTest { public static void main(String[] args) { StringBuffer sb=new StringB ...
- poj 3067 Japan(线段树?,神奇卡时代码,暂未完)
题目 //暴力的,没什么算法的,被琪琪视为傻逼的代码: //照者学长的神奇幸运卡时代码,虽然能AC,但是中途wa,tle了那么多次,啥也不想说了 //学长威武,能想出sum必须要是—— __int64 ...
- android音乐播放器开发教程
android音乐播放器开发教程 Android扫描sd卡和系统文件 Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能 android操作sdcard中的多媒体文件——音乐列表 ...
- Thread的第五天学习
1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如:卖票系统就可以这么做! package com.thread.demo; publi ...
- lintcode 中等题:subSets 子集
题目 子集 给定一个含不同整数的集合,返回其所有的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], ...
- *[topcoder]ChooseTheBestOne
https://www.topcoder.com/stat?c=problem_statement&pm=13146&rd=15852 // Need carefully calc t ...