博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hrbeu 哈工程 Eular Graph
阅读量:6811 次
发布时间:2019-06-26

本文共 2158 字,大约阅读时间需要 7 分钟。

欧拉回路裸题,给定n个点和m条有向边,判断该图是否为欧拉回路

有向图欧拉回路判断条件有:图连通,所有点的度为偶数

 

代码一,用并查集来判断图是否连通,然后逐一扫描所有点的度是否为偶数

#include 
#include
#define N 110int n,m;int d[N];int p[N];int find(int x) //并查集{ return p[x]==x ? x : find(p[x]); }int main(){ int CASE,i,j,u,v,x,y,ok; scanf("%d",&CASE); while(CASE--) { scanf("%d%d",&n,&m); memset(d,0,sizeof(d)); for(i=1; i<=n; i++) p[i]=i; for(i=1; i<=m; i++) { scanf("%d%d",&u,&v); d[u]++; d[v]++; x=find(u); y=find(v); if(x!=y) p[u]=v; }// for(i=1; i<=n; i++) printf("%d ",find(i)); printf("\n"); for(ok=1,i=1 ;i

 

代码二,直接用邻接矩阵来建图,然后dfs整个图看有多少个连通分量,当只有一个连通分量时说明图连通,然后再逐一判断所有点的度是否为偶数

#include 
#include
#define N 110bool g[N][N],vis[N];int d[N];int n,m;void dfs(int i){ int j; for(j=1; j<=n; j++) if( g[i][j] && !vis[j]) { vis[j]=1; dfs(j); } }int main(){ int T,i,u,v,count; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); memset(g,0,sizeof(g)); memset(vis,0,sizeof(vis)); memset(d,0,sizeof(d)); for(i=1; i<=m; i++) { scanf("%d%d",&u,&v); g[u][v]=1; d[u]++; d[v]++; } for(count=0,i=1; i<=n; i++) if(!vis[i]) { ++count; vis[i]=1; dfs(i);} if(count>1) printf("no\n"); else { for(i=1; i<=n; i++) if( d[i]%2 ) break; if(i>n) printf("yes\n"); else printf("no\n"); } } return 0;}

转载于:https://www.cnblogs.com/scau20110726/archive/2012/11/02/2751820.html

你可能感兴趣的文章
ARM计划将四核心CPU引入磁盘驱动器
查看>>
智慧城市数量年内超500个 这两大难题不得不解
查看>>
《中国人工智能学会通讯》——10.27 提出的方法
查看>>
大数据重点不在于“大”
查看>>
普元发布Primeton DI 6.1.0送新鲜:为用户终极体验而战
查看>>
解读固态磁盘性能发展之现状
查看>>
CFO职能扩张 CIO将面临更大数据压力
查看>>
区块链之路该怎么走?
查看>>
12款白帽子用于黑客渗透测试的操作系统
查看>>
博科助力澳大利亚的基因组研究机构应对大数据增长
查看>>
DDoS再度来袭 德国网络沦陷的原因是?
查看>>
传统销售移动办公初体验:兵行千里高效掌握
查看>>
智能家庭本周锋闻:家电联网路漫漫
查看>>
聊聊Java的泛型及实现
查看>>
噪音引来抗议 法庭命令关闭巴黎一个数据中心
查看>>
困难重重,错误铺就的混合云之路
查看>>
第二季度全球服务器市场出货量增长2%
查看>>
诺基亚出价166亿美元收购阿尔卡特朗讯
查看>>
人工智能就像电力,NVIDIA开始为智能安防行业“供电”
查看>>
SDN趋势回顾:2016年是软件定义WAN元年
查看>>