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算法. 显然,当原图为欧拉图时,答案即为其欧拉回路的长度. 考虑原图不存 ...
随机推荐
- Spring Cloud(8):Sleuth和Zipkin的使用
场景: 某大型电商网站基于微服务架构,服务模块有几十个. 某天,测试人员报告该网站响应速度过慢.排除了网络问题之后,发现很难进一步去排除故障. 那么:如何对微服务的链路进行监控呢? Sleuth: 一 ...
- Android远程服务
一.远程服务主要代码 1.IService.aidl package com.shz.remoteservice; interface IService { String getTicketInfoB ...
- httpclient请求去掉返回结果string中的多余转义字符
public String doGet() { String uriAPI = "http://XXXXX?str=I+am+get+String"; String result= ...
- Java处理XSS漏洞的工具类代码
原文:http://www.open-open.com/code/view/1455809388308 public class AntiXSS { /** * 滤除content中的危险 HTML ...
- 共享内存mmap学习 及与 shmxxx操作的区别
上一篇学习了共享内存: http://www.cnblogs.com/charlesblc/p/6142139.html 根据这个 http://blog.chinaunix.net/uid-2633 ...
- openwrt下载编译
1. 安装依赖包: yum install autoconf binutils bison bzip2 flex gawk gcc gcc-c++ gettext make ncurses-devel ...
- 获取Windows用户所有的账户名
/// <summary> /// 设置用户密码 /// </summary> [DllImport("Netapi32.dll")] extern sta ...
- css3最新版中文参考手册在线浏览
对于CSS 3.0,它对于我们Web设计人员来说不只是新奇的技术,更重要的是这些全新概念的Web应用给我们的设计开发提高了效率以及更多的无限可能性,我们将不必再依赖图片或者 Javascript 去完 ...
- linux【第六篇】用户和用户管理及定时任务复习
定时任务复习 1.什么是定时任务? 2.如何编辑查看定时任务(配置文件位置?),语法的特殊字符意义是什么?- * , / 3.书写定时任务有哪些要领? 4.生产如何调试定时任务 5.生产场景配置定时任 ...
- 【iOS系列】-autorelease的作用
内存管理原则(配对原则):只要出现了new,alloc,retain方法,就要配对出现release,autorelease 1:对象存入到自动释放池中,当这个池子被销毁的时候他会对池子中所有的对 ...