一笔画问题
来源:互联网 发布:东北财经大学网络信息 编辑:程序博客网 时间:2024/04/30 00:34
这道题就是判断是否有欧拉路,解题的思路是先判断是否是通路,也就是dfs 深搜找到是否有路,然后再判断有奇数个结点的个数,如果奇数的结点的个数有0个或者2个就是欧拉路,否则就不是欧拉路。。。其他的就是细节的处理了,由于刚开始没有对每次全局变量初始化所以一直WA,这也说明了全局变量不是都很好用的,切记每次初始化。。。
点击打开链接
#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<vector>#include<cstring>using namespace std;int node[1005];bool map[1005][1005];bool flag,vis[1005];void dfs(int v,int n){ vis[v] = true; for(int i=1; i<=n; i++) if(!vis[i]&&map[i][v]) dfs(i,n);}void camp(int n, int e){ int v, u; flag = true; memset(map,false, sizeof(map)); memset(vis,false,sizeof(vis)); //记得每次初始化 for(int i=0; i<e; i++) { scanf("%d %d",&v,&u); map[v][u] =map[u][v] = true; } dfs(1,n); for(int i=1; i<=n; i++) if(!vis[i]) { flag = false; printf("No\n"); return; } int cout,num=0; for(int i=1; i<=n; i++) { cout =0; for(int j=1; j<=n; j++) { if(map[i][j]==true) cout++; } if(cout%2==1) num++; } if(num==0||num==2) { flag = true; } else { flag = false; } if(flag) printf("Yes\n"); else printf("No\n"); return;}int main(){ int ncase, n, e; scanf("%d",&ncase); while(ncase--) { scanf("%d %d",&n, &e); camp(n,e); } system("pause"); return 0;}
- 一笔画问题
- 一笔画问题
- 一笔画问题
- nyoj_42 一笔画问题
- NYOJ42 一笔画问题
- NYOJ42-一笔画问题
- NYOJ 一笔画问题
- 一笔画问题 nyist42
- nyoj42一笔画问题
- 一笔画问题
- 一笔画问题
- nyoj42 一笔画问题
- 一笔画问题
- NYOJ42-一笔画问题
- NYOJ42一笔画问题
- 一笔画问题
- 一笔画问题
- 42 一笔画问题
- POJ2253:Frogger
- dcm模块只生成xaw文件未生成v文件
- Windows-DB2 9.7安装图解
- Oracle中spool命令实现的两种方法比较
- static关键字的详解
- 一笔画问题
- 2011微软笔试题
- RED HAT 5.5 Linux下安装配置JDK+TOMCAT+Oracle10g
- (笔记)Internet网络基础
- PPT分屏演示方法
- VC++ 游戏编程----背景动画设计
- Spring MVC过滤器-登录过滤
- 原子操作与 x86 上的 lock 指令前缀
- C++ 磁盘映射