博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P4001 [BJOI2006]狼抓兔子(平面图转对偶图)
阅读量:5235 次
发布时间:2019-06-14

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

 

明明只要最小割加点优化就能过的东西……

然而我偏偏要去学平面图转对偶图结果发现课件关键地方看不清->

而且建图累的半死……

说实话只要最大流建图的时候反向边直接设为当前边容量再加个当前弧优化就好了……

至于平面图转对偶图……自己看代码我无能为力了……

1 //minamoto 2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 8 char buf[1<<21],*p1=buf,*p2=buf; 9 template
inline bool cmax(T&a,const T&b){
return a
inline bool cmin(T&a,const T&b){ return a>b?a=b,1:0;}11 inline int read(){12 #define num ch-'0'13 char ch;bool flag=0;int res;14 while(!isdigit(ch=getc()))15 (ch=='-')&&(flag=true);16 for(res=num;isdigit(ch=getc());res=res*10+num);17 (flag)&&(res=-res);18 #undef num19 return res;20 }21 const int N=3000005;22 int ver[N<<1],Next[N<<1],head[N],edge[N<<1],tot;23 inline void add(int u,int v,int e){24 ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e;25 ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=e;26 }27 bool vis[N];int s,t,dis[N];queue
q;28 int spfa(){29 memset(dis,0x3f,sizeof(dis));30 vis[s]=1,q.push(s),dis[s]=0;31 while(!q.empty()){32 int u=q.front();q.pop();vis[u]=0;33 for(int i=head[u];i;i=Next[i]){34 int v=ver[i];35 if(dis[v]>dis[u]+edge[i]){36 dis[v]=dis[u]+edge[i];37 if(!vis[v]) q.push(v),vis[v]=1;38 }39 }40 }41 return dis[t];42 }43 int n,m;44 inline void heng(int i,int j,int k){45 if(i==1) add(s,j,k);46 else if(i==n) add((2*(n-1)-1)*(m-1)+j,t,k);47 else add((2*(i-1)-1)*(m-1)+j,2*(i-1)*(m-1)+j,k);48 }49 inline void shu(int i,int j,int k){50 if(j==1) add((i*2-1)*(m-1)+1,t,k);51 else if(j==m) add(s,2*i*(m-1)-(m-1),k);52 else add((i-1)*2*(m-1)+j-1,((i-1)*2+1)*(m-1)+j,k);53 }54 inline void xie(int i,int j,int k){55 add((i-1)*2*(m-1)+j,(i-1)*2*(m-1)+m-1+j,k);56 }57 int main(){58 //freopen("testdata.in","r",stdin);59 n=read(),m=read();60 s=(n-1)*(m-1)*2+1,t=(n-1)*(m-1)*2+2;61 for(int i=1;i<=n;++i)62 for(int j=1;j

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9565279.html

你可能感兴趣的文章
bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
查看>>
BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
查看>>
定制jackson的自定义序列化(null值的处理)
查看>>
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
SQL查询总结 - wanglei
查看>>
安装cocoa pods时出现Operation not permitted - /usr/bin/xcodeproj的问题
查看>>