欧拉回路与欧拉路径
(有向图/无向图的)欧拉路径是一条路径,满足其经过所有边恰好一次。欧拉回路是起点和终点相同的一条欧拉路径。欧拉通路是起点和终点不同的一条欧拉路径。
有向图存在欧拉回路:将边看成无向边后图联通,且所有点入度均等于出度。
有向图存在欧拉通路:将边看成无向边后图联通,且除两个点外,所有点入度均等于出度。那两个点中,其中一个出度比入度大 \(1\),作为欧拉通路的起点。另一个入度比出度大 \(1\),作为欧拉通路的终点。
无向图存在欧拉回路:所有点度数均为偶数。
无向图存在欧拉通路:除两个点度数为奇数外,所有点度数均为偶数。那两个点中,一个作为欧拉通路之起点,另一个作为终点。
构造欧拉回路可以直接 \(\text{dfs}\),具体来说,我们不断找环,用栈合并即可。
无向图欧拉回路:
void dfs(int x){
vis[x]=1;
for(int &i=head[x];i;i=ne[i]){
if(~ans[i>>1])continue;
int u=ver[i];
ans[i>>1]=(i&1);dfs(u);
}
}
有向图欧拉回路:
void dfs(int x){
for(int &i=head[x];i;i=ne[i]){
if(vis[i])continue;vis[i]=1;
int u=ver[i];
dfs(u);ans.push_back(make_pair(x,u));
}
}
标签:通路,int,dfs,有向图,构造,回路,欧拉 来源: https://www.cnblogs.com/A-Quark/p/16559069.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。