山东省济南市历城第二中学——洛谷图论入门题--基本题必做 图的遍历—3.骑马修栅栏(fence)


由于我这个破题提交了十四五遍,所以我决定写篇博客来记录一下。
这个题的题目描述是这样的


首先一看这个题我瞬间就想到了一笔画问题(欧拉回路)。
对于能够一笔画的图,我们有以下两个定理。
定理1:存在欧拉路的条件:图是连通的,有且只有2个奇点。
定理2:存在欧拉回路的条件:图是连通的,有0个奇点。
求欧拉路的算法很简单,使用深度优先遍历即可。时间复杂度O(m+n)
#include<iostream>
#include<cmath>
using namespace std;
int du[] ={}, ola[] ={}, n , start = ,
//du[]用来存每个点的度数 ,ola[]用来存储路径 ,start查找最小的开始点
map[][] ={}, m = , tot = ;
void dfs(int k){
for(int i = ; i <= m ; i++){
if(map[k][i] != ){
map[k][i] --;
map[i][k] --;
//避免重复走
dfs(i);
}
}
tot++;
ola[tot] = k;
//深搜每个边
} int main(){
int x , y;
cin>>n;
for(int i = ; i <= n ; i++){
cin>>x>>y;
map[x][y] ++;
map[y][x] ++;
//至于为什么是 map[][]++我们等下会给出一组数据
du[x]++;
du[y]++;
m = max(x , m);
m = max(m , y);
//寻找最大的边
}
for(int i = ; i <= m ; i ++) {
if(du[i] % == ){
start = i;
break;
}
}
//找奇数边
if(start == ){
for(int i = ; i <= m ; i ++){
if(du[i] > ){
start = i;
break;
}
}
}
//如果全是偶数就找最小的偶数
dfs(start);
for(int i = tot ; i >= ; i--){
//最后几个87分是最坑的,题目中让%500,但是500%500=0
//一个点就是这么坑,500不取模,所以让边大于500再%500
if(ola[i]>)
ola[i] %= ;
cout<<ola[i]<<endl;
}
//结束
return ;
}
好吧,这篇博客就先写这么多,毕竟时间有限,同行们看到了这篇随笔的话可以顺便看一个这个友情链接 蒟蒻 http://mrmorning.coding.me/大佬给你们助阵!
山东省济南市历城第二中学——洛谷图论入门题--基本题必做 图的遍历—3.骑马修栅栏(fence)的更多相关文章
- 【洛谷2791】幼儿园篮球题(第二类斯特林数,NTT)
[洛谷2791]幼儿园篮球题(第二类斯特林数,NTT) 题面 洛谷 题解 对于每一组询问,要求的东西本质上就是: \[\sum_{i=0}^{k}{m\choose i}{n-m\choose k-i ...
- 洛谷 P5596 【XR-4】题
洛谷 P5596 [XR-4]题 洛谷传送门 题目描述 小 X 遇到了一道题: 给定自然数 a,ba,b,求满足下列条件的自然数对 (x,y)(x,y) 的个数: y^2 - x^2 = ax + b ...
- 洛谷P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences• o 119通过o 468提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题解 最新讨论 • 数据有问题题 ...
- 洛谷 P2731 骑马修栅栏 Riding the Fences 解题报告
P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...
- 洛谷P2731 骑马修栅栏 [欧拉回路]
题目传送门 骑马修栅栏 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经 ...
- 洛谷 P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...
- 洛谷P3676 小清新数据结构题 【树剖 + BIT】
题目链接 洛谷P3676 题解 我们先维护\(1\)为根的答案,再考虑换根 一开始的答案可以\(O(n)\)计算出来 考虑修改,记\(s[u]\)表示\(u\)为根的子树的权值和 当\(u\)节点产生 ...
- 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)
洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...
- 【洛谷】CYJian的水题大赛 解题报告
点此进入比赛 \(T1\):八百标兵奔北坡 这应该是一道较水的送分题吧. 理论上来说,正解应该是DP.但是,.前缀和优化暴力就能过. 放上我比赛时打的暴力代码吧(\(hl666\)大佬说这种做法的均摊 ...
随机推荐
- c#访问数据库的两种方法以及事务的两种方法
//2015/07/03 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- 一步一步在Windows中使用MyCat负载均衡 上篇
传统关系型数据库的分布式开发通常需要自己做,不仅耗时耗力而且效果不是很理想,当想快速搭建时,最初想到的是看有没有第三方,网上牛人还是很多的,做得比较好的其中之一Mycat,它是开源的分布式数据库系统, ...
- 表单界面的兼容PC手机端解决方案
就当写一篇随笔吧~上星期还在做加盟模块(兼容微信端),这星期已经加班做快递扫码模块(react+node),所以我感觉只有弹药备足了才能稍微轻松些应对各种需求.实话说在同个部门的大佬面前差距确实大,如 ...
- Angular.js之内置过滤器学习笔记
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- iOS应用 跳转到系统的设置界面
现在很多APP都需要获取用户权限,例如,允许调用位置信息,读取短信,拨打电话,开启WIFI,掉头摄像头等,用户不允许APP获取这些权限的时候.最好的用户体验是,直接跳转到系统设置界面,让用户自己设置. ...
- linux 下maven安装
版本要求maven3.2.3 软件下载 wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.3/binaries/apache-maven-3 ...
- Cocos2dx热更新遇到的那些坑
1.Cocos2dx热更新因为文件名含有空格,ios下载失败bug修改 问题描述: 项目中偶尔遇到美术图片命名时不规范,导致图片名字含有空格.导致ios热更新时,遇到下载失败. 解决方案: 1.从新改 ...
- 使用PHP生成二维码(PHPQRCode)
关于什么是二维码,可以阅读 http://baike.baidu.com/view/132241.htm 这里就不多讲了,二维码的应用非常广泛,似乎一夜之间渗透到我们生活的方方面面,地铁广告.报纸.火 ...
- BOM基础(四)
最近写的文章感觉内容不像之前那么充实,内容可能也有点杂.对于DOM,和BOM来说,要理解是不难的,难的是做的时候.要自己想的到,而且,对于目前阶段来说,BOM还存在着很大的兼容性问题,最主要就是要兼容 ...
- Archlinux 的U盘自动装载(二)升级到 udisks2
在安装 mysql-gui-tools 过程中,发现需要用到 udisks2.udisks和udisks2可以互相替换也可以共用.最后决定换用 udisks2 安装 先卸载原来的软件,如果有的话. p ...