UVA 12118 图+欧拉路
来源:互联网 发布:淘宝店进货渠道有哪些 编辑:程序博客网 时间:2024/05/15 13:52
题意
有v个城市,每个城市间都有道路连通,要检查e个道路,起点终点任选。输入v、e、检查每个道路的时间t。求最少总时间。
思路
这个题因为放在了二叉树这一块,思维想着二叉树去了。。
因为每个城市都联通,说一说如果有一堆路,连接成了树,如果有K个叶子,那么加上K/2个叶子,就能够形成一个欧拉路。
对没错,欧拉路!当时第一时间还没考虑到是欧拉路,于是设计了个DFS,统计叶子,统计树的个数,然而编完之后,样例
没过,画了一下图。发现有环的情况。
想了想 欧拉路的定理,如果一个联通图,形成欧拉路,那么度数为奇数的有两个,如果是欧拉环,则全部为度数为偶数的顶点。
于是这个题就解决了。
还有,任何图中,度数为奇数的点的个数为偶数。
思路便出来了 考虑一个联通图 ,如果有 k个度数为奇数的点,那么 加上k/2-1 条边,就能够将度数为奇数的点个数降为2,形成欧拉路
考虑K个都能形成欧拉路的联通图,只需要加上K-1条边,就能够形成一个具有欧拉路的联通图
WA1
只考虑了树
AC DFS求连通图个数以及统计度数
#include<cstdio>#include<cstring>#include<cstdlib>#include <map>#include <set>#include <vector>#include <iostream>#include <algorithm>#include <queue>#include <stack>#include <sstream>#include <cmath>#include <string>#define maxn 1111#define inf 0x3f3f3f3f3fusing namespace std;vector <int> mp[maxn];int node[maxn];int du[maxn];int ans;int ans1;int bfs(int x){ int sum=0; node[x]=1; for(int i = 0 ; i<mp[x].size(); i++){ if(!node[mp[x][i]]) sum+=bfs(mp[x][i]); } if(du[x]%2) return 1+sum; else return sum;}int main(){ int n,e,t,ca=0; while(~scanf("%d%d%d",&n,&e,&t),n){ memset(du,0,sizeof(du)); memset(node,0,sizeof(node)); for(int i = 1; i <= n ; i++) mp[i].clear(); for(int i = 0 ; i<e ; i++){ int x,y; scanf("%d%d",&x,&y); mp[x].push_back(y); mp[y].push_back(x); du[x]++; du[y]++; } ans=ans1=0; for(int i = 1 ; i<=n ; i++){ if(!node[i]&&du[i]){ ans++; int x=bfs(i); //printf("%d\n",x); if(x>2) ans1+=(x-2)/2; } } if(ans>0) ans--; printf("Case %d: %d\n",++ca,(e+ans+ans1)*t); }}
0 0
- UVA 12118 图+欧拉路
- UVa 12118
- uva 10596(欧拉路)
- UVA 10441Catenyms【欧拉路】
- [UVA 10441]Catenyms[欧拉路]
- UVa 10129 欧拉路
- UVA 193 图着色
- uva 10615 二部图 【???】!!!!!!!!!!!!!!!!!!!!!!!!!!
- uva 10004(图)
- uva 572(图)
- uva 705(图)
- UVa 193 图着色
- 193UVA图着色
- uva
- UVA
- UVA
- UVA
- uva
- 【Linux4.1.12源码分析】协议栈gro收包之MAC层处理
- 想运营好社交媒体帐号?这11条提醒可别忘了
- 高精模板
- 《JavaScript 闯关记》之单体内置对象
- MYSQL千万级数据量的优化方法积累
- UVA 12118 图+欧拉路
- 试探法
- 单片机栈溢出的一种检测方法
- bfs与dfs
- 基于codeigniter框架写的网站日志系统适配器(支持写入本地文件、数据库、远程服务器)
- mysql主从同步
- 坑爹的问题,Spark On Yarn ERROR spark.SparkContext: Error initializing SparkContext.
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍
- ubuntu下 离线安装apt-get 、python包