标签:tnt 遍性 哈密顿 int Head edegs include 欧拉
可行遍性——欧拉图and哈密顿图
1.欧拉回路
欧拉回路:图G的一个回路,若他恰巧通过G中每条边一次,则称该回路为欧拉回路。欧拉回路就是就是从图上一点出发,经过所有的边且只经过一次,最终回到起点的路径。
1 #include<algorithm> 2 #include<iostream> 3 #include<cstring> 4 #include<cstdio> 5 #include<cmath> 6 #include<map> 7 using namespace std; 8 const int maxv= 110; 9 const int maxe= 5010; //可能的最大值 10 11 struct ENode 12 { 13 int to; 14 int Next; 15 }; 16 ENode edegs[maxe]; 17 int Head[maxv], tnt; 18 void init() 19 { 20 memset(Head, -1, sizeof(Head)); 21 tnt= -1; 22 } 23 void Add_ENode (int a, int b) 24 { 25 ++ tnt; 26 edegs[tnt].to= b; 27 edegs[tnt].Next= Head[a]; 28 Head[a]= tnt; 29 ++ tnt; 30 edegs[tnt].to= a; 31 edegs[tnt].Next= Head[b]; 32 Head[b]= tnt; 33 } 34 35 int oLaData[maxe]; 36 int oLa_cnt; 37 bool visit[maxe]; 38 void oLa_dfs(int u) 39 { 40 for (int k= Head[u]; k!= -1; k= edegs[k].Next) 41 { 42 if (! visit[k]) 43 { 44 visit[k]= 1; //标记当前边已走过 45 visit[k^ 1]= 1; 46 oLa_dfs(edegs[k].to); 47 oLaData[oLa_cnt ++]= k; //回溯过程中记录边 48 } 49 } 50 } 51 52 int main() 53 { 54 int n; 55 /*建图*/ 56 /*判断欧拉回路是否存在*/ 57 oLa_dfs(1); 58 return 0; 59 }View Code
标签:tnt,遍性,哈密顿,int,Head,edegs,include,欧拉 来源: https://www.cnblogs.com/Amaris-diana/p/11279028.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。