题目链接

P2731 骑马修栅栏 Riding the Fences

解题思路

存图+简单\(DFS\)。

坑点在于两种不同的输出方式。

#include<stdio.h>
#define N 1030
int n,g[N][N],deg[N],m=1024,M=-1;
void dfs(int p){
int i;
printf("%d\n",p);
for(i=m;i<=M;i++){
if(g[p][i]){
g[p][i]--;
g[i][p]--;
dfs(i);
}
}
}
int main(){
int i,a,b;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d%d",&a,&b);
if(a<m)m=a;
if(b<m)m=b;
if(a>M)M=a;
if(b>M)M=b;
g[a][b]++;g[b][a]++;
deg[a]++;deg[b]++;
}
int st=m;
for(i=m;i<=M;i++)
if(deg[i]&1){st=i;break;}
dfs(st);
return 0;
}

刚开始图方便直接在\(DFS\)内输出了,结果莫名其妙\(WA\)。想了半天才想出这样一个数据:

4

1 2

1 3

3 4

4 1

所以不能直接输出,应该存栈输出。

AC代码

#include<stdio.h>
#define N 1030
int n,g[N][N],deg[N],m=1024,M=-1,sta[N<<1],cnt;
void dfs(int p){
int i;
for(i=m;i<=M;i++){
if(g[p][i]){
g[p][i]--;
g[i][p]--;
dfs(i);
}
}
sta[++cnt]=p;
}
int main(){
int i,a,b;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d%d",&a,&b);
if(a<m)m=a;
if(b<m)m=b;
if(a>M)M=a;
if(b>M)M=b;
g[a][b]++;g[b][a]++;
deg[a]++;deg[b]++;
}
int st=m;
for(i=m;i<=M;i++)
if(deg[i]&1){st=i;break;}
dfs(st);
for(i=cnt;i;i--)printf("%d\n",sta[i]);
return 0;
}

P2731 骑马修栅栏 Riding the Fences 题解(欧拉回路)的更多相关文章

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

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

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

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

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

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

  4. P2731 骑马修栅栏 Riding the Fences

    题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次.John能从任何一个顶 ...

  5. luogu P2731 骑马修栅栏 Riding the Fences

    入度为奇数的点,搜他. 最好邻接矩阵... #include<cstdio> #include<iostream> #define R register int using n ...

  6. 欧拉回路--P2731 骑马修栅栏 Riding the Fences

    实在懒得复制题干了 *传送 1.定义 *如果图G(有向图或者无向图)中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路. *如果图G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路. *具有欧拉回路 ...

  7. 「USACO」「LuoguP2731」 骑马修栅栏 Riding the Fences(欧拉路径

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

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

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

  9. LG2731 骑马修栅栏 Riding the Fences

    题意 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次.John能从任何一个顶点( ...

随机推荐

  1. hive+postgres安装部署过程

    master节点安装元数据库,采用postgres:#useradd postgres#password postgressu - postgreswget https://ftp.postgresq ...

  2. Bootstrap微章

    给链接.导航等元素嵌套 span class="badge" 元素,可以很醒目的展示新的或未读的信息条目. <a href="#">Inbox &l ...

  3. TensorFlow+restore读取模型

    # 注意和前一或二篇Lenet训练并验证的文章从`y_conv = tf.nn.softmax(fc2)`起的不同 # 部分函数请参照前后2篇文章 import tensorflow as tf im ...

  4. element-ui & babel-plugin-component config bug

    element-ui & babel-plugin-component config bug vue-cli bad babel.config.js module.exports = { pr ...

  5. 使用 js 实现十大排序算法: 选择排序

    使用 js 实现十大排序算法: 选择排序 选择排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  6. React Suspense All In One

    React Suspense All In One 挂起让组件在渲染之前"等待"某些东西. 如今,Suspense仅支持一种用例:使用React.lazy动态加载组件. 将来,它将 ...

  7. Interview Questions All In One

    Interview Questions All In One web fullstack System Design Operating System Object-Oriented Design O ...

  8. Web 网站安全测试 & 渗透测试

    Web 网站安全测试 & 渗透测试 Penetration Testing learning path 建一个测试环境来进行渗透测试 安装 Kali Linux -渗透测试操作系统 在虚拟机中 ...

  9. js & Input & Paste & Clipboard & upload & Image

    js & Input & Paste & Clipboard & upload & Image input paste upload image js Clip ...

  10. flutter web in action

    flutter web in action flutter for web https://flutter.dev/web https://flutter.dev/docs/get-started/w ...