图论:平面图的对偶图

平面图我们离散课上讲过,在二维空间中可以写成不交叉边的图就是平面图,最小的非平面图有K5和K(3,3)

每个平面图都对应一个对偶图,对偶图中的最小环就是原图的最小割

如果删去对偶图中s-t这条边,就是相当于求最短路了

把原图中每个点在对偶图中标号,重新建图,在新图中跑最短路就行了

然后看一下平面图和对偶图之间的转化:

对偶图中的每一个点即为平面图中的某一个面,对偶图中任意两点间的线都是平面图中对应两平面公共边的割线,如果平面图中某一条边只属于一个面,那么在对偶图中就是一个环边

对偶图的边数等于平面图的边数,对偶图的点数等于平面图的面数

 

针对BZOJ1001

①把每一个图中的面积块当作新的点。
②每一条边都与两个面相连,把面看作点后,这条边连接这两个面化作的点,权值不变。
③连接起点与终点,把外面的最大平面分成两份,分别为最短路的起点与终点。
④跑一边最短路即可。

我感觉难在建图上,别的都非常好说

建图必须好好研究一下

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=2000005;
 4 int n,m,nm,cnt;
 5 bool vi[maxn];
 6 int dis[maxn],g[maxn],q[maxn];
 7 struct Edge
 8 {
 9     int t,next,w;
10 }e[4*maxn];
11 void insert(int u,int v,int w)
12 {
13     cnt++;e[cnt].t=v;e[cnt].w=w;e[cnt].next=g[u];g[u]=cnt;
14     cnt++;e[cnt].t=u;e[cnt].w=w;e[cnt].next=g[v];g[v]=cnt;
15 }
16 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值