现在写到欧拉路,理解起来并不算特别困难...吧...

但是非常恶心的是每次都要调试半天,做不到一遍两遍就能ac
每次写程序都对于程序的整体构架没有清晰的思路,想到哪里写到哪里真的是个非常差的习惯[尽管在写不出来的时候非常有用],所以快点改掉吧.

似乎也没有什么特别困难的部分,相关的题在oj上是p1209-p1211
数组一定要记得稍微开大一点,不要顺手就打一个数据范围上去,很初级也很常见的错误
应该深入理解一下dfs之后记录的作用,但是我到现在还不理解
以p1210为例
 
骑马修栅栏  
     
     
  描述 Description  
  农民John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。 
John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过同一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。 
每一个栅栏连接两个顶点,顶点用1到500标号(虽然有的农场并没有500个顶点)。一个顶点上可连接任意多(>=1)个栅栏。所有栅栏都是连通的(也就是你可以从任意一个栅栏到达另外的所有栅栏)。 
你的程序必须输出骑马的路径(用路上依次经过的顶点号码表示)。我们如果把输出的路径看成是一个500进制的数,那么当存在多组解的情况下,输出500进制表示法中最小的一个 (也就是输出第一个数较小的,如果还有多组解,输出第二个数较小的,等等)。 
     
     
  输入格式 Input Format  
  第1行: 一个整数F(1 <= F <= 1024),表示栅栏的数目 
第2到F+1行: 每行两个整数i, j(1 <= i,j <= 500)表示这条栅栏连接i与j号顶点。 
     
     
  输出格式 Output Format  
  输出应当有F+1行,每行一个整数,依次表示路径经过的顶点号。注意数据可能有多组解,但是只有上面题目要求的那一组解是认为正确的。
     
     
  样例输入 Sample Input  
   
     
     
  样例输出 Sample Output  
   
     
     
  时间限制 Time Limitation  
  1s
     
     
  注释 Hint  
  字典序最小的欧拉路
给一个例子:
     
     
  来源 Source  
  usaco 3.3.1
     
     
 
Flag
  Accepted
题号
  P1210
  图结构
通过
  58人
提交
  205次
通过率
  28%
难度
  1
 
     
     
 
提交 讨论 题解 数据
 
     

代码如下[里面有非常不必要的东西..但是都这样了也懒得改回去了]

 
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int maxn=;
int tail=;
int flag=;
int f,ss;
int sta[]={};
int sum[]={};
int woc[][]={};
int mos[][]={};
int cun[]={};
void mydfs(int x,int k){
for(int i=;i<=mos[x][];i++){
int w=mos[x][i];
if(woc[x][w]!=){
woc[x][w]-=;
woc[w][x]-=;
mydfs(w,k+);
cun[ss--]=w;//这个--肥肠重要,嗯我也不会解释,复习的时候看着理解好了
if(ss==){
for(int i=;i<=f+;i++){
cout<<cun[i]<<endl;
}
}
}
}
}
int main(){
cin>>f;
ss=f+;
for(int i=;i<=f;i++){
int x,y;
cin>>x>>y;
if(x>maxn){
maxn=x;
}
if(y>maxn){
maxn=y;
}
sum[x]++;
sum[y]++;
mos[y][++mos[y][]]=x;
mos[x][++mos[x][]]=y;
woc[x][y]+=;
woc[y][x]+=;
}
for(int i=;i<=maxn;i++){
if(mos[i][]!=){
sort((int*)mos+*i+,(int*)mos+*i+mos[i][]+);
}
}
int f1=;
for(int i=;i<=;i++){
if(sum[i]%==){
f1=i;
break;
}
}
if(f1!=){
cout<<f1<<endl;
mydfs(f1,);
}
else{
cout<<<<endl;
mydfs(,);
}
return ;
}

欧拉路小结 JZYZOJ1210 骑马修栅栏的更多相关文章

  1. 洛谷 P2731 骑马修栅栏 Riding the Fences 解题报告

    P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...

  2. 洛谷P2731 骑马修栅栏 [欧拉回路]

    题目传送门 骑马修栅栏 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经 ...

  3. 洛谷 P2731 骑马修栅栏 Riding the Fences

    P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...

  4. 洛谷P2731 骑马修栅栏 Riding the Fences

    P2731 骑马修栅栏 Riding the Fences• o 119通过o 468提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题解 最新讨论 • 数据有问题题 ...

  5. [USACO 3.3.1]骑马修栅栏t

    [USACO 3.3.1]骑马修栅栏 时间限制: 1 Sec  内存限制: 64 MB提交: 39  解决: 17[提交][状态][讨论版] 题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿 ...

  6. codevs 水过 骑马修栅栏

    [问题描述] 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅 ...

  7. P2731 骑马修栅栏 Riding the Fences 题解(欧拉回路)

    题目链接 P2731 骑马修栅栏 Riding the Fences 解题思路 存图+简单\(DFS\). 坑点在于两种不同的输出方式. #include<stdio.h> #define ...

  8. P2731 骑马修栅栏 欧拉函数

    题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个 ...

  9. USACO Section 3.3 骑马修栅栏 Riding the Fences

    题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个 ...

随机推荐

  1. 简易安装sqoop

    版本 :hive-0.13.1-cdh5.3.6.tar.gz 1:解压 然后 进到 conf 目录 修改 sqoop-env.sh   2:如果使用mysql 数据库 要将 mysql驱动包拷贝到 ...

  2. bzoj 1072 状压DP

    我们用w[i][j]来表示,i是一个二进制表示我们选取了s中的某些位,j表示这些位%d为j,w[i][j]则表示这样情况下的方案数,那么我们可以得到转移.w[i|(1<<k)][(j*10 ...

  3. Xcode 获取本地IP

    // // // #define MAXADDRS 32 extern char *ip_names[MAXADDRS]; void InitAddresses(); void GetIPAddres ...

  4. Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)

    程序设计的三种基本结构: 面向对象,面向过程,函数式编程   1,什么是面向对象编程    面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就 ...

  5. python 第二章 对象与类型

    可变对象和不可变对象 1,可变对象,list(列表),dict(字典),集合(set),字节数组. 2,不可变对象,数值类型,字符串,字节串,元组(具体形式 ()). 注意条件:可变和不可变指的是该对 ...

  6. 好久没写了,SQLSERVER服务丢失后怎么办

    服务器突然中了病毒,查杀后,结果两个服务也丢了, 从其他机器上COPY了两个EXE过来,编写这两个服务就搞定了,不用重装MSSQL2005了 sc create MSSQLSERVER binpath ...

  7. webconfig的配置解析

    <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...

  8. MD5做为文件名。机器唯一码有电脑的CPU信息和MAC地址,这两个信息需要在linux或unix系统下才能获取吧。

    可以采用机器(电脑)唯一码 + 上传IP + 当前时间戳 + GUID ( + 随机数),然后MD5做为文件名.机器唯一码有电脑的CPU信息和MAC地址,这两个信息需要在linux或unix系统下才能 ...

  9. Floyd_Warshall(任意两点之间的最短路)

    /* O(V^3) 案例: 1 2 2 1 3 5 2 3 1 */ #include <cstdio>#include <iostream>using namespace s ...

  10. 以太坊go-ethereum项目源码本地环境搭建

    如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的.今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境. GO语言环境搭建 以win8为例,访问地址https://gola ...