题意:给出一个国家城市个数n   所需走过道路个数e   每条道路长t   该国家任意两个城市之间都存在唯一道路长t     要求 :找一条最短的路遍历所有所需走过的路

一开始以为是图的匹配  但是好像又无从下手

参考了其他人的做法  发现要用欧拉道路的知识

欧拉道路:如果一个联通图,形成欧拉路,那么度数为奇数的有两个,如果是欧拉环,则全部为度数为偶数的顶点。

一个图的 度数为奇数的个数一定是偶数!!!!!

当一个联通块 为一个环 或者度数为奇数的个数恰巧为两个时   不需要另外加路了  一笔画就行

当一个联通块度数超过2时  每两个奇数度的点可以用一条增加的路来连接 就可以消去两个奇数度    所以 增广路=(奇数度点的个数-2)/2

还有就是   两个不相连的联通块需要一条路连在一起        用ans表示

#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
#define N 1005
#define inf 0x3f3f3f3f
int du[N];
vector<int>g[N];
int vis[N]; int dfs(int x)
{
int sum=;
vis[x]=;
for(int i=;i<g[x].size();i++)
{
if(!vis[ g[x][i] ])
sum+=dfs(g[x][i]);
}
if(du[x]%)
return sum+;
else
return sum;
} int main()
{
int n,e,t;
int ans;//联通块的个数
int ans1;//奇数度要补的个数
int cas=;
while(scanf("%d%d%d",&n,&e,&t)==,n)
{
for(int i=;i<=n;i++)g[i].clear();
memset(du,,sizeof du);
memset(vis,,sizeof vis);
for(int i=;i<e;i++)
{
int a,b;
scanf("%d%d",&a,&b);
du[a]++;
du[b]++;
g[a].push_back(b);
g[b].push_back(a);
}
ans=ans1=;
for(int i=;i<=n;i++)
{
if(du[i]&&!vis[i])
{
ans++;
int x=dfs(i);
if(x>)
ans1+=(x-)/;
}
}
if(ans>)
ans--;
printf("Case %d: %d\n",++cas,t*( ans+ans1+e ) );
}
return ;
}

最新文章

  1. c++加法高精度算法
  2. 提升Nginx+PHP-FPM性能技巧
  3. Ajax1
  4. 【转】oracle 监听静态注册举例解析
  5. WinForm 中 VScrollBar Maximum 问题
  6. AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
  7. angular启动过程分析
  8. ORA-07445 [mdagun_iter+957] When Using SDO_AGGR_UNION 问题处理
  9. Android Gradle 配置选项合集
  10. git 分支的创建与提交
  11. HTMl课堂随笔
  12. Geometric regularity criterion for NSE: the cross product of velocity and vorticity 4: $u\cdot \om$
  13. easyui-textbox多行文本中输入内容,有回车操作时将文本拼接&lt;br/&gt;
  14. 聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路
  15. flask-appbuilder +echarts 展示数据笔记
  16. Redis之AOF重写及其实现原理
  17. ElasticSearch(二)CentOs6.4下安装ElasticSearch
  18. Qt实在太漂亮了
  19. oracle函数验证时间格式并返回
  20. SharePoint 企业搜索-PowerShell

热门文章

  1. snprintf()解析
  2. windows环境下批处理实现守护进程
  3. 安装解压版的mariadb
  4. bzoj千题计划111:bzoj1021: [SHOI2008]Debt 循环的债务
  5. SQL语句(十五)视图
  6. 【翻译】Voidbox: Docker on YARN
  7. scrapy爬取天气数据
  8. Postgresql获取所有schema
  9. 程序员 &amp; 设计师都能用上的 75 份速查手册
  10. 转 -- ARM 中 LDR伪指令