USACO/fence 3.3.1 欧拉回路
来源:互联网 发布:斑马斑马 知乎 编辑:程序博客网 时间:2024/06/11 01:48
这个题我刚开始没有考虑有环的情况,用了个自以为简单的方法,然后一直错了
代码如下。
#include<stdio.h>#include<stdlib.h>int total[510][510]={0};int min=1000,max=0;int ans[3000]={0},f=0;int sum=0;/*=========================每个结点从小到大dfs当其没有其它结点时将其放在输出数组里===========================*/void dfs(int n,int m){ int i ,j; if(sum==m) return; //访问的边的条数等于m,结束 for(i=min;i<=max;i++) if(total[n][i]) { total[n][i]--; //两者边的条数减1 total[i][n]--; sum++; //边的条数加1 dfs(i,m); ans[f++]=i; }}/*===============================主要了解欧拉回路的性质,当结点度数全部为偶数时可以从任一结点开始,但只有奇数时只能从奇数开始,奇数结束。==============================*/int main(){ FILE *fin=fopen("fence.in","r"); FILE *fout=fopen("fence.out","w"); int edge[510]={0}; int num; int i ,j,x,y; int start; fscanf(fin,"%d",&num); for(i=0;i<num;i++) { fscanf(fin,"%d %d",&x,&y); edge[x]++;edge[y]++; total[x][y]++; total[y][x]++; min=min<x?min:x; min=min<y?min:y; max=max>x?max:x; max=max>y?max:y; } start=min; for(i=min;i<=max;i++) { if(edge[i]%2) { start=i; break; } } dfs(start,num); ans[f]=start; for(i=f;i>=0;i--) { fprintf(fout,"%d\n",ans[i]); } return 0;}
- USACO/fence 3.3.1 欧拉回路
- 欧拉回路 USACO 3.3.1 Riding the Fences
- USACO Section 3.3 Riding The Fences - 欧拉回路
- USACO-Section 3.3 Riding the Fences(欧拉回路)
- USACO Riding Fences 欧拉回路
- 欧拉路径, 欧拉回路 USACO Riding the Fences
- [U]3.3.1 欧拉回路
- usaco Riding the Fences(欧拉回路模板)
- 【USACO题库】4.1.3 Fence Loops篱笆回路
- HDU1878 欧拉回路【欧拉回路】
- usaco 3.3 fence 2008.11.7
- USACO 3.4.1 closed fence
- 欧拉回路判断
- 欧拉回路 hdu1878
- 欧拉回路
- 欧拉回路
- 欧拉回路
- 欧拉回路,欧拉路
- Spring MVC学习(七)-------SpringMVC数据验证
- 异步请求request.status .responseText 等
- Android 发送短信功能
- 流程图控件FlowChart.NET指定布局算法教程
- Android 软件开发之数据的 新建 储存 读取 删除 详解
- USACO/fence 3.3.1 欧拉回路
- android bitmap
- 子jsp给父jsp传参
- Hiero工具的利用
- 内存越界的一种定位方法
- C#中Application类简述
- MySQL 1364 错误提示:#1364 - Field "XX" doesn't have a def...
- Nginx rewrite 配置问号解决办法
- 去掉NSString空字符串