HDU1878-欧拉回路
来源:互联网 发布:io域名在哪里注册好 编辑:程序博客网 时间:2024/04/29 17:43
欧拉回路
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14227 Accepted Submission(s): 5388
Problem Description
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
Input
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结
束。
束。
Output
每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
Sample Input
3 31 21 32 33 21 22 30
Sample Output
10
题目大意:
题目意思如题,无向图欧拉回路
题目思路:
对于无向图欧拉回路我们只需判断图联通和每个点的度是否都为偶数
AC代码:
#include<cstring>#include<cstdio>#include<queue>using std::queue;int n;int mp[1005][1005];bool bfs(int u){ //bfs判联通 queue<int>q; q.push(u); int vis[1005]; memset(vis,0,sizeof(vis)); vis[u]=1; while(!q.empty()){ u=q.front(); q.pop(); for(int i=1;i<=n;i++){ if(!vis[i]&&mp[u][i]){q.push(i),vis[i]=1;} } } for(int i=1;i<=n;i++)if(!vis[i])return false; return true;}int main(){ int m; while(~scanf("%d",&n),n){ scanf("%d",&m); int num[1005]; memset(num,0,sizeof(num)); memset(mp,0,sizeof(mp)); while(m--){ int u,v; scanf("%d%d",&u,&v); mp[u][v]=mp[v][u]=1; num[u]++,num[v]++; } int i; for(i=1;i<=n;i++){ if(!num[i]||num[i]%2){ //是否度都为偶数 printf("0\n"); break; } } if(i==n+1){ if(bfs(1))printf("1\n"); else printf("0\n"); } } return 0;}
0 0
- 欧拉回路 hdu1878
- hdu1878欧拉回路
- hdu1878 欧拉回路
- 欧拉回路((hdu1878))
- HDU1878欧拉回路
- 欧拉回路 hdu1878
- HDU1878欧拉回路
- hdu1878 欧拉回路
- hdu1878 欧拉回路
- HDU1878 欧拉回路
- hdu1878 欧拉回路
- hdu1878 欧拉回路
- HDU1878 欧拉回路
- HDU1878 欧拉回路
- HDU1878-欧拉回路
- HDU1878 欧拉回路【欧拉回路】
- hdu1878之欧拉回路
- hdu1878欧拉回路【并查集】
- Hadoop-2.7.3环境搭建之伪分布式模式
- 汉字转换成十六进制
- PP保护2:与调试相关的四个内核函数
- 订单可视化(智能制造、流程再造、企业信息化) 第四篇 技术方案的制定
- Linux与TPM2芯片
- HDU1878-欧拉回路
- 389. Find the Difference
- 订单可视化(智能制造、流程再造、企业信息化) 第五篇 团队建设
- Volley<二> 实现原理深度解析
- 单例模式-多线程解决方案3
- 提防坏人:Nginx 拒绝指定IP访问
- CodeForces 748E. Santa Claus and Tangerines(二分,递推)
- C++中通过复制方式实例化对象(C++中对象的赋值及复制操作)
- hadoop | spark | hadoop的搭建和spark 的搭建