YCOJ中国邮递员问题
题目:
Description
一个邮递员从邮局出发,需要去 n - 2个城市送信,送完信件以后回家。
邮局在城市 1,家在城市 n,任意两个城市之间都有道路,但是这些道路是单向,也就是说 a 到 b 和 b 到 a 的路径长度不一定是一样的。
他必须经过每个城市一次,并且不能重复经过,最后回到家里。
现在要求你计算他需要经过的路径总和的最小长度。
Input
第一行有一个整数 n(2≤ n ≤ 10)。
接下里输入一个 n × n 的邻接矩阵 G, G[i][j] 表示从 i 走到 j 的路径长度。
Output
输出一个整数表示最小经过的路径总长度。
Sample Input 1
4
0 1 1 1
1 0 2 1
5 5 0 6
1 1 3 0
Sample Output 1
7
Source
计蒜客
当我第一眼看到这道题时,顿时傻眼了这是什么题啊?
a 到 b 和 b 到 a 的路径长度不一定是一样的。
这是几个意思?算了,我们可是OIer,不要用正常人的眼光来看这些题。
也就是说,这道题的图是一个有向图,所以又要请出我们的动态数组vector了。
这道题的大致思路就是DFS求出所有方案数,求出一个和目前已知最优方案比一下。
具体代码:
#include <bits/stdc++.h>
using namespace std;
int n;
bool vis[1010];
struct node{
int v;
int w;
node(){};
node(int _v,int _w){
v=_v;
w=_w;
} //构造函数
};//
int ans=0x3f3f3f3f;
vector <node>g[15];
void dfs(int u,int k,int sum){
if(u==n&&k==n){
ans=min(ans,sum);
return;
}//走完了,和目前已知最小值比一下
vis[u]=1;
for (int i=0;i<g[u].size();i++){
if(!vis[g[u][i].v]){
dfs(g[u][i].v,k+1,sum+g[u][i].w);//代码核心
}
}
vis[u]=0;
}
int main(){
cin >>n;
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
int w;
cin>>w;
g[i].push_back(node(j,w));//放进动态数组
}
}
dfs(1,1,0);//调用函数
cout << ans;
return 0;
}
YCOJ中国邮递员问题的更多相关文章
- LightOJ1086 Jogging Trails(欧拉回路+中国邮递员问题+SPFA)
题目求从某点出发回到该点经过所有边至少一次的最短行程. 这个问题我在<图论算法理论.实现及应用>中看过,是一个经典的问题——中国邮递员问题(CPP, chinese postman pro ...
- YCOJ过河卒C++
过河卒是一道~~较简单 的问题,用递归或者动态规划都可以完成,但今天主要不是递归或者动态规划,而是用深度优先搜索做的.虽然会有两组TLE~~ 深搜是一种向下搜索的算法(如图所示) 它能有效的统计中点到 ...
- YCOJ单向公路
题目: 描述 某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另 ...
- YCOJ黑熊过河
Description 有一只黑熊想过河,但河很宽,黑熊不会游泳,只能借助河面上的石墩跳过去,他可以一次跳一墩,也可以一次跳两墩,但是每起跳一次都会耗费一定的能量,黑熊最终可能因能量不够而掉入水中,所 ...
- poj 2404 中国邮递员问题 欧拉回路判定+状压dp
/* 状压dp 邮递员问题:求经过任意点出发经过每一条边一次并回到原点. 解法:1.如果是欧拉回路那么就是所有的边的总和. 2.一般的解法,找出所有的奇度顶点,任意两个顶点匹配,即最小完美匹配,可用状 ...
- 贪心算法:旅行商问题(TSP)
TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干个城市,任何两个城市之间 ...
- BOM和DOM详解
DOM介绍 D(文档)可以理解为整个Web加载的网页文档,O(对象)可以理解为类似window对象只来的东西,可以调用属性和方法,这里我们说的是document对象,M(模型)可以理解为网页文档的树形 ...
- 算法设计手冊(第2版)读书笔记, Springer - The Algorithm Design Manual, 2ed Steven S.Skiena 2008
The Algorithm Design Manual, 2ed 跳转至: 导航. 搜索 Springer - The Algorithm Design Manual, 2ed Steven S.Sk ...
- [UVa10296]Jogging Trails
题目大意: 中国邮递员问题. 给你一个无向带权连通图,求经过所有边并返回起点的最短路径. 思路: Edmonds-Johnson算法. 显然,当原图为欧拉图时,答案即为其欧拉回路的长度. 考虑原图不存 ...
随机推荐
- [Bzoj4540][Hnoi2016] 序列(莫队 + ST表 + 单调队列)
4540: [Hnoi2016]序列 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1567 Solved: 718[Submit][Status] ...
- linux下启动mysql服务(类似于windows下net start mysql)
1.linux系统启动方式:service mysql start.其类似于windows下net start mysql
- Python遍历路径下文件并转换成UTF-8编码
http://www.cnblogs.com/wuyuegb2312/archive/2013/01/11/2856772.html 开始学Python,这篇文章来自于应用需求. os.walk很方便 ...
- 【深入探索c++对象模型】data语义学二
单一继承中,base class 和derived class的对象都是从相同的地址开始,其间差异只在于derived class比较大,用以容纳自己的nonstatic members. 若vptr ...
- 怎样解读Caffe源代码
怎样解读Caffe源代码 导读 Caffe是如今非常流行的深度学习库,能够提供高效的深度学习训练.该库是用C++编写.能够使用CUDA调用GPU进行加速.可是caffe内置的工具不一定能够满足用户的全 ...
- There is no PasswordEncoder mapped for the id "null"
There is no PasswordEncoder mapped for the id "null" 学习了:https://blog.csdn.net/dream_an/ar ...
- POJ 3488 & HDU 1915 Arne Saknussemm(模拟)
题目链接: POJ:http://poj.org/problem? id=3488 HDU:pid=1915">http://acm.hdu.edu.cn/showproblem.ph ...
- 战五渣系列之八(绝杀AOP)
开发不用aop.程序猿的人生该会浪费多少时间.我想是时候让程序猿打败alpha狗了.程序猿解救世界. 1.概念 面向切面编程.这意味着,一切不在流水线上的东西.包含权限.日志.缓存.校验.资源.事物. ...
- Hive中行列转换
1.演示多列转为单行 数据文件及内容: student.txt xiaoming|english|92.0 xiaoming|chinese|98.0 xiaoming|math|89.5 huahu ...
- 湘潭邀请赛——Alice and Bob
Alice and Bob Accepted : 133 Submit : 268 Time Limit : 1000 MS Memory Limit : 65536 KB Problem ...