中国邮路问题 ZOJ1903
方法就是构造最小包含G的欧拉图,首先得出所有奇点,然后用最短路匹配,所以要先floyd处理,得出最优匹配我的方法比较搓,是直接枚举的。。
#include<cstdio>
#include<cstring>
const int inf=99999999;
int n,m;
int u[20],d[20],mp[20][20];
int min(int a,int b)
{return a<b?a:b;
}
void floyd()
{for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<n;k++){if(i==j||i==k||j==k)continue;if(mp[i][k]==inf||mp[k][j]==inf)continue;mp[i][j]=min(mp[i][k]+mp[k][j],mp[i][j]);}
}
int gao()
{int i,j,k,mx=inf;for(i=0;i<n;i++)if(!u[i])break;if(i==n)return 0;u[i]=1;for(int j=i+1;j<n;j++)if(!u[j])u[j]=1,mx=min(mx,gao()+mp[i][j]),u[j]=0;u[i]=0;return mx;
}
int main()
{while(scanf("%d",&n),n){int ans=0;memset(u,0,sizeof(u));memset(d,0,sizeof(d));scanf("%d",&m);for(int i=0;i<n;i++)for(int j=0;j<n;j++)mp[i][j]=inf;for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);a--,b--;ans+=c;mp[a][b]=min(mp[a][b],c);mp[b][a]=mp[a][b];d[a]++,d[b]++;}floyd();for(int i=0;i<n;i++)if(!(d[i]&1))u[i]=1;printf("%d\n",ans+gao());}return 0;
}
中国邮路问题 ZOJ1903相关推荐
- Cards Ext与中国邮路问题
这个题我大概永远都不会出出来了所以我就把它写在博客里吧 如果有人没题出可以拿走坑害同学 题目大意:给定一个长度为n(n≤400)n(n\leq 400)的0101序列,每次你可以选择一个区间[l,r] ...
- 中国邮路问题编程求解
中国邮路问题(Chinese Postman Problem)是一个非常经典的图论问题:一个邮递员送信,要走完他负责投递的全部街道(所有街道都是双向通行的且每条街道可以经过不止一次),完成任务后回到邮 ...
- Chinese Postman Problem Aizu - DPL_2_B(无向图中国邮路问题)
题意: 带权无向图上的中国邮路问题:一名邮递员需要经过每条边至少一次,最后回到出发点,一条边多次经过权值要累加,问最小总权值是多少.(2 <= N <= 15, 1 <= M < ...
- The Chinese Postman Problem HIT - 2739(有向图中国邮路问题)
无向图的问题,如果每个点的度数为偶数,则就是欧拉回路,而对于一个点只有两种情况,奇数和偶数,那么就把都为奇数的一对点 连一条 边权为原图中这两点最短路的值 的边 是不是就好了 无向图中国邮路问 ...
- HOJ 2739 The Chinese Postman Problem 带权有向图上的中国邮路问题
[题目大意] 带权有向图上的中国邮路问题:一名邮递员需要经过每条有向边至少一次,最后回到出发点,一条边多次经过权值要累加,问最小总权值是多少.(2 <= N <= 100, 1 < ...
- HOJ 2739 网络流【带权有向图上的中国邮路问题】
[带权有向图上的中国邮路问题] #include<cstring> #include<cstdio> #include<algorithm> #include< ...
- 中国邮路问题的解决(数据结构课程设计)
题目描述: 邮递员的工作是每天在邮局里选出邮件,然后送到他所管辖的客户中,再返回邮局.自然地,若他要完成当天的投递任务,则他必须要走过他所投递邮件的每一条街道至少一次.问怎样的走法使他的投递总行程为最 ...
- 数据结构——中国邮路问题
研究契机 本学期学校开设数据结构课程,研究了一下中国邮路问题,以供自己复习参考. 中国邮路问题 中国邮路问题是中国学者于20世纪50年代提出的一种典型的组合优化问题,后在国际上被称为中国邮路问题(Ch ...
- 中国邮路问题邮递员问题欧拉路径图论C++
下载链接:https://download.csdn.net/download/RONNIE_Zz/13094843 通路:在无向图中由点边交替组成的序列就是通路(如果这个图是简单的,那么也可以使用点 ...
最新文章
- 在Foreda8上试安装Apchehttpd-2.4.6.tar.gz
- 回顾2013 - 技术上
- 了解你所不知道的SMON功能(五):Recover Dead transaction
- 宝塔 + 百度BCC + centos + vue + 搭建nginx服务器
- 搜狗输入法自定义短语(克制名词解释、背诵类问题)
- js设置html不可编辑状态,JS_设置弹出页面的地址栏不可编辑
- android 媒体的uri,安卓 - 从相对路径+显示名称中获取媒体的URI或ID
- working-with-php-and-beanstalkd
- JSON.parse和eval的区别
- 【功能测试】-【黑盒测试用例】
- Linux内核学习书籍
- 盘点 4 个开源小游戏
- Vue单文件不兼容IE解决方法
- 5-20 打印九九口诀表 (15分)
- SQL 左外连接,右外连接,全连接,内连接 4种连接的区别
- HFS+ vs APFS
- 计算机促销策划方案,电脑促销活动方案 2017暑假电脑促销活动方案
- rm: cannot remove `/usr/local/tmp/‘: Directory not empty
- SSL Tomcat 双向认证
- linux下安装deb程序
热门文章
- python中image什么意思_浅谈python图片处理Image和skimage的区别
- SpringBoot的四种异步处理,写这篇文章,我自己先学到了
- 从零写一个Asp.net core手脚架 (异常处理)
- C | 进程和线程的区别
- 兼容手机PC,点击即可复制文本内容到剪切板插件clipboard.js
- linux设置ramdisk模块,Linux系统中的RAMdisk设置
- 差分进化算法和遗传算法的区别
- jdbc:oracle:thin:@localhost:1521:orcl和jdbc:oracle:thin:@localhost:1521/orcl的区别
- android 开发实例 底部导航栏(1)
- Webstorm和Skype以及flash的安装