HDU 1878欧拉回路
来源:互联网 发布:win10删除多余的网络2 编辑:程序博客网 时间:2024/05/22 15:56
欧拉回路
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
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
#include<stdio.h>#include<string.h>using namespace std;int pre[1010];int lu[1010];int find(int p){int x=p;int t;while(p!=pre[p])p=pre[p];return p;}void Merge(int x,int y){int fx=find(x);int fy=find(y);if(fx!=fy)pre[fy]=fx;}int main(){ int n,m,i,j,x,y,ans,sum; while(scanf("%d",&n)&&(n!=0)) { for(i=1;i<=n;i++) pre[i]=i; scanf("%d",&m); memset(lu,0,sizeof(lu)); while(m--) { scanf("%d%d",&x,&y); Merge(x,y); lu[x]++; lu[y]++; } ans=0;sum=0; for(i=1;i<=n;i++) { if(pre[i]==i) { ans++; if(ans>1) break; } if(lu[i]&1) sum++; } if(ans>1) { printf("0\n"); continue; } if(sum==0) printf("1\n"); else printf("0\n"); } return 0;}
0 0
- HDU 1878 欧拉回路
- hdu 1878 欧拉回路
- 【欧拉回路】hdu 1878
- hdu 1878 欧拉回路
- HDU 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- HDU-1878-欧拉回路
- Hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- HDU 1878 欧拉回路
- hdu 1878 欧拉回路
- hdu 1878 欧拉回路
- HDU-1878 欧拉回路
- HDU 1878 欧拉回路
- maven项目 ***\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)
- 使用 StretchBlt 制作 缩略图标
- js中Object常用方法和属性
- oracle 数据回滚到指定时间点 命令语句
- [美剧赏析] 权力的游戏<Game of Thrones>完全赏析 (3-4)
- HDU 1878欧拉回路
- IP 回顾
- AndroidStudio下JNI开发(easy+1.0)之字符串转换关系
- 内部接口和内部类的区别
- ios各种设备尺寸相对应的像素
- .bat文件运行后不退出的解决方案
- Comparator和Comparable
- SV进程间通进的几个名词
- Android 图片下载工具类:BitmapUtil