题意:给出一个国家城市个数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=0;vis[x]=1;for(int i=0;i<g[x].size();i++){if(!vis[ g[x][i] ])sum+=dfs(g[x][i]);}if(du[x]%2)return sum+1;elsereturn sum;
}int main()
{int n,e,t;int ans;//联通块的个数int ans1;//奇数度要补的个数int cas=0;while(scanf("%d%d%d",&n,&e,&t)==3,n){for(int i=0;i<=n;i++)g[i].clear();memset(du,0,sizeof du);memset(vis,0,sizeof vis);for(int i=0;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=0;for(int i=1;i<=n;i++){if(du[i]&&!vis[i]){ans++;int x=dfs(i);if(x>2)ans1+=(x-2)/2;}}if(ans>0)ans--;printf("Case %d: %d\n",++cas,t*( ans+ans1+e  ) );}return 0;
}

转载于:https://www.cnblogs.com/bxd123/p/10453024.html

6-14 Inspector s Dilemma uva12118(欧拉道路)相关推荐

  1. UVA 10129 Play on Words(欧拉道路)

    题意:给你n个字符串,问你是否可以出现一条链,保证链中每个字符串的第一个元素与上一个字符串的最后一个元素相同,注意可能重复出现同一个字符串 题解:以每一个字符串第一个元素指向最后一个元素形成一个有向图 ...

  2. 欧拉道路 和 欧拉回路

    经典的七桥问题:是否存在一条路线,可以不重复的走遍7座桥. 转化为图就是,是否存在一条路线,可以不重复地走遍所有边. 所以在欧拉道路中,"进"和"出"是相对应的 ...

  3. 计算机图形学【GAMES-101】14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  4. poj2154-color-polyan次二面体+欧拉函数优化

    N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...

  5. hdu 1286( 欧拉函数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...

  6. hdu1395 数论 欧拉函数

    hdu1395 数论   欧拉函数 对于给出的每一个n 求最小正整数 x 满足 2^x mod n = 1 1.如果给出的n 是偶数或者 1 则一定无解 2.如果是奇数 首先根据欧拉定理 我们可知 p ...

  7. hdu2824(2009多校第一场) 线性筛法求欧拉函数

    欧拉函数指小于n且与其互质的数个数: phin=n*(1-1/p1)*(1-1/p2)*...(1-1/pn) 由此便可以利用类似筛素数筛出所有欧拉函数,具体看代码: 1 #include<st ...

  8. 鸿蒙之后华为把欧拉也捐了,还承诺不做欧拉商用发行版

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 华为又搞了几个大动作: 第一,正式把欧拉开源操作系统捐赠给开放原子开源基金会. 第二,宣布欧拉和鸿蒙已实现内核技术共享,明年3月发布的欧拉版 ...

  9. UVa 10820 (打表、欧拉函数) Send a Table

    题意: 题目背景略去,将这道题很容易转化为,给出n求,n以内的有序数对(x, y)互素的对数. 分析: 问题还可以继续转化. 根据对称性,我们可以假设x<y,当x=y时,满足条件的只有(1, 1 ...

最新文章

  1. SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)
  2. 警方:“外卖员因获差评杀人”为假消息 造谣者被刑拘
  3. 如何在PHP中删除字符串中的所有空格? [重复]
  4. oracle sql命令行中上下左右使用
  5. java 反射获取对象_使用Java反射机制获取对象
  6. 举例说明html语言的结构,第2章、HTML语言的基本结构.doc
  7. tf.keras与 TensorFlow混用,trainable=False设置无效
  8. confly MySQL_MYSQL的操作类(已封装)
  9. pymysql executemany()函数
  10. 华为服务器重装操作系统,华为服务器安装操作系统
  11. 在网页中实现透明flash的代码
  12. 最简单的pdf加水印方法,五个步骤很详细
  13. 音调识别 php,PHP 汉字转拼音工具
  14. cron每半个小时执行一次_Linux中Cron任务间隔执行:每隔几分钟/几小时/几天
  15. Implement strStr() -- LeetCode
  16. 支付宝小程序(支付)
  17. 计算机基础知识赏花主观题,计算机学院学生制作校园赏花地图
  18. 通网网站被大规模挂马 15个频道中病毒
  19. 天太机器人吴志诚_2018年机器人行业十大风云人物
  20. SQLite的事务处理

热门文章

  1. linux系统管理命令使用,Linux系统管理命令使用说明
  2. python list 切片 复杂度_彻底理解Python list切片原理
  3. 想学web前端啊?初学者必看,HTML入门指南
  4. 怎样才能在前端职场中拥有更强的竞争力?
  5. 华为mate10手机听筒测试软件,华为mate 10功能说:这几个设置,让你通话体验直线上升,简直了!...
  6. 表贴电阻尺寸与什么有关_0欧电阻存在的意义?看了就懂了
  7. wireshark 开始抓包
  8. java 场景处理,最适合使用RxJava处理的四种场景
  9. .sh是什么语言_为什么《山海经·中次二经》中,把“西王母”叫做“马腹”?...
  10. 下行文格式图片_收藏!公文写作格式大全(附示例图)