一笔画问题 NYOJ
2015-08-09 19:25
330 查看
一笔画问题
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。
规定,所有的边都只能画一次,不能重复画。
输入
第一行只有一个正整数N(N<=10)表示测试数据的组数。
每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P)
随后的Q行,每行有两个正整数A,B(0<A,B<P),表示编号为A和B的两点之间有连线。
输出
如果存在符合条件的连线,则输出"Yes",
如果不存在符合条件的连线,输出"No"。
样例输入
2
4 3
1 2
1 3
1 4
4 5
1 2
2 3
1 3
1 4
3 4
样例输出
No
Yes
//一笔画定理 联通的并且奇数条边的点个数为0或2
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。
规定,所有的边都只能画一次,不能重复画。
输入
第一行只有一个正整数N(N<=10)表示测试数据的组数。
每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P)
随后的Q行,每行有两个正整数A,B(0<A,B<P),表示编号为A和B的两点之间有连线。
输出
如果存在符合条件的连线,则输出"Yes",
如果不存在符合条件的连线,输出"No"。
样例输入
2
4 3
1 2
1 3
1 4
4 5
1 2
2 3
1 3
1 4
3 4
样例输出
No
Yes
//一笔画定理 联通的并且奇数条边的点个数为0或2
#include <iostream> #include <cstdio> #include <string.h> #include <vector> #include <algorithm> using namespace std; const int N=1000+10; const int M=2000+10; int book ; struct Node{ int s,e; }node[M]; vector<int> ve ; bool flag ; int count1; void dfs(int x){ for(int i=0;i<ve[x].size();i++){ if(flag[ve[x][i]]==1) continue; flag[ve[x][i]]=1; count1++; dfs(ve[x][i]); } } int main(){ int t,i,j,a,b,n,m; bool ok; scanf("%d",&t); while(t--){ j=0; ok=1; scanf("%d%d",&n,&m); memset(book,0,sizeof(int)*(n+1)); for(i=0;i<m;i++){ scanf("%d%d",&a,&b); book[a]++; book[b]++; ve[a].push_back(b); ve[b].push_back(a); } //判断奇数边的点的总数是不是0或2 是则可以 for(i=1;i<=n;i++){ if(book[i]%2==1) j++; if(j>2) { ok=0; break; } } if(ok==0||(j!=0&&j!=2)){ printf("No\n"); for(i=1;i<=n;i++) ve[i].clear(); continue; } //判断是否连tong memset(flag,0,sizeof(bool)*(n+1)); flag[1]=1; count1=1; dfs(1); if(count1!=n) printf("No\n"); else printf("Yes\n"); for(i=1;i<=n;i++) ve[i].clear(); } return 0; }
相关文章推荐
- Swift调用C代码的方法
- 103. Binary Tree Zigzag Level Order Traversal
- I学霸官方免费教程三:Java基础之注释 关键字 标识符
- 2015年7月份来的知识回顾
- 单元测试junit
- 说一说Android的工程目录结构
- VSTS负载测试——如何:使用 SQL 创建结果存储区
- Scala 深入浅出实战经典 第52讲:Scala中路径依赖代码实战详解
- c语言中 指针和一维数组 简要总结
- 栈 链表的实现
- 第一周工作总结及计划表
- gerrit H2 数据库管理
- sdnu 1087.过河(NOIP 2005 提高组)DP状态压缩
- CS224d Problem set 2作业
- 《R语言实战》读书笔记--第三章 图形初阶(二)
- 区间覆盖
- (原)数据结构——线索二叉树
- B. Berland National Library
- Ubuntu 安装mysql和简单操作
- 如何实时查看linux下的日志