- 欧拉很复杂,目前理解还太浅,有几个规律:
-
一.无向图
欧拉回路:每个顶点度数都是偶数
欧拉路:所有点度数为偶数,或者只有2个点度数为奇数
二.有向图(非混合)
欧拉回路:每个顶点入度等于出度
欧拉路:每个顶点入度等于出度;
或者只有1个点入度比出度小1, 从这点出发,只有1个点出度比入度小1,从这个点结束,其他点入度等于出度
三.混合图欧拉回路
四.如果要求用最少的费用遍历所有边至少一次
1.所有点度为偶数,总费用是所有边权之和。
2.有两个点度为奇数,总费用为所有边权之和+两个奇度点之间最短路。
- 做题就围绕这些来解,简单说一个求联通分量的程序:
<span style="font-size:18px;"> int k=0; queue<int>q; vector<int>edge[N]; for(i=1;i<=n;i++) { if(dis[i]==0) { dis[i]=++k;//记录联通分量 } else continue; q.push(i); while(!q.empty()) { int num=q.front(); q.pop(); for(int j=0;j<edge[num].size();j++)//遍历在一条联通分量上的点 { int val=edge[num][j]; if(dis[val]==0)//此点还未标记联通分量 { dis[val]=k; q.push(val); } } } } 记录完后就共有k个分量</span>
图论之欧拉
最新推荐文章于 2024-11-10 15:53:23 发布