【USACO 3.3】Riding The Fences(欧拉路径)
题意:
给你每个fence连接的两个点的编号,输出编号序列的字典序最小的路径,满足每个fence必须走且最多走一次。
题解:
本题就是输出欧拉路径。
题目保证给出的图是一定存在欧拉路径,因此找到最小的度数为奇数的点(要么有两个,要么没有)出发,如果没有,就从最小的点出发。
然后用fleury算法。
fleury算法其实就是dfs,每次走过的边就删去(做上标记)。
回溯的时候把点放入栈内。
最后全部出栈就是所求的路径。
代码:
/*
TASK:fence
LANG:C++
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define in(s) freopen(#s".in","r",stdin)
#define out(s) freopen(#s".out","w",stdout);
#define ll long long
#define N 501
using namespace std;
int g[N][N],maxn,minn=N;
int d[N];
int stack[N],top;
void dfs(int u){
for(int v=1;v<=maxn;v++)if(g[u][v]){
g[u][v]--;
g[v][u]--;
dfs(v);
}
stack[top++]=u;
}
int main() {
in(fence);
out(fence);
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
g[u][v]++;
g[v][u]++;
d[u]++;d[v]++;
maxn=max(max(maxn,u),v);
minn=min(min(minn,u),v);
}
int i=1;
while(i<N&&d[i]%2==0)i++;
if(i<N)dfs(i);//找到第一个度数是奇数的点,则从这个点出发
else dfs(minn);//否则从最小的出现的点出发
while(top--)printf("%d\n",stack[top]);
return 0;
}
【USACO 3.3】Riding The Fences(欧拉路径)的更多相关文章
- USACO 3.3 Riding the Fences
Riding the Fences Farmer John owns a large number of fences that must be repaired annually. He trave ...
- 「USACO」「LuoguP2731」 骑马修栅栏 Riding the Fences(欧拉路径
Description Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编 ...
- 洛谷P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences• o 119通过o 468提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题解 最新讨论 • 数据有问题题 ...
- 深搜解Riding the Fences
Riding the Fences Farmer John owns a large number of fences that must be repairedannually. He traver ...
- 洛谷 P2731 骑马修栅栏 Riding the Fences 解题报告
P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...
- 洛谷 P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...
- P2731 骑马修栅栏 Riding the Fences 题解(欧拉回路)
题目链接 P2731 骑马修栅栏 Riding the Fences 解题思路 存图+简单\(DFS\). 坑点在于两种不同的输出方式. #include<stdio.h> #define ...
- USACO Section 3.3: Riding the Fences
典型的找欧拉路径的题.先贴下USACO上找欧拉路径的法子: Pick a starting node and recurse on that node. At each step: If the no ...
- USACO Section 3.3 骑马修栅栏 Riding the Fences
题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个 ...
随机推荐
- Windows下快速安装Flask的一次经历
前提: 1.已安装python版本(一般都是2.X) 2.已安装easy_install python安装,记得配置Python的环境变量,例如:我的直接在Path上加 G:\Python 验证安装P ...
- linux添加启动器图标(Ubuntu为例)
添加启动器图标,以eclipse为例,%表示命令提示符,shell命令:%nano /usr/share/applications/eclipse.desktop-----------[Deskto ...
- 每次新建项目出现appcompat_v7 解决方法
ADT升级版本后每次新建项目出现appcompat_v7 , 解决方案如下 问题生成:
- 1.JAVA基础复习——计算机基础与环境变量配置
软件开发的了解 软件开发: 软件:一系列按照特定组织的计算机数据和指令的集合. 开发:制作软件. 程序:一系列有序指令的集合. 人机交互 人机交互的方式有两种:图形化界面和命令行方式. 图形化界面:简 ...
- JS高程5.引用类型(2)Array类型
Array类型: ECMAScript数组的每一项可以保存任何类型的数据,数组的大小是可以动态调整的. 创建数组的基本方式: (1)使用Array构造函数 var color=new Array(); ...
- SharePoint 部署时报错: 未能提取此解决方案中的cab文件
在vs里右击SharePoint项目,选择"部署",结果报错: Error occurred in deployment step 'Add Solution':Fail to e ...
- SharePoint 2013 设置网站集为”只读”
有时候当我们升级或者部署项目时,不希望用户在此期间操作SharePoint,比如上传文档. SharePoint提供了这样的功能:管理中心------应用程序管理------管理配额和锁定 完成后,再 ...
- Linux 学习
远程登录Linux(05) 文本方式远程: putty SecureCRT winSCP SshClient图形方式远程:Xmanager Xming ifconfigps -ef | gr ...
- [译]Angular2 和TypeScript -- 一次简要的预览
原文链接:https://www.infoq.com/articles/Angular2-TypeScript-High-Level-Overview 作者: Yakov Fain Posted o ...
- 读《C#高级编程》第1章问题
读<C#高级编程>第1章 .Net机构体系笔记 网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但是做事情很能坚持. 本章主要是了解.Net的结构,都是一些概念,并没 ...