【POJ】【P3422】【Kaka's Matrix Travels】【题解】
来源:互联网 发布:it审计 编辑:程序博客网 时间:2024/05/16 09:19
传送门:http://poj.org/problem?id=3422
传说中的K取方格数,写dp一取方格数的时候就想过K取方格数,一年了啊啊啊
Code:
/*ID:zkyOJ:POJIndex:3422Language:C++*/#include<queue>#include<vector>#include<cstdio>#include<cstring>#include<climits>#include<iostream>#include<algorithm>#define pb push_back using namespace std;const int INF=INT_MAX;int n,mm,m,k;int map[51][51];struct edge{int u,v,cap,flow,cost;edge(int _u,int _v,int _cap,int _flow,int _cost){u=_u;v=_v;cap=_cap;flow=_flow;cost=_cost;}};vector<edge>edges;vector<vector<int> >G;void add(int u,int v,int cap,int cost){edges.pb(edge(u,v,cap,0,cost));mm=edges.size();G[u].pb(mm-1);}int hash[51][51];int tot=0;int s,t;int d[5110];int vis[5110];int a[5100];int prev[5100];int flow=0,cost=0;bool spfa(){queue<int>q;q.push(s);memset(d,0xaf,sizeof(d));memset(vis,0,sizeof(vis));int B=d[0];d[s]=0;vis[s]=1;a[s]=INF;while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int i=0;i<G[u].size();i++){edge &e=edges[G[u][i]];if(e.cap-e.flow>0&&d[e.v]<d[u]+e.cost){d[e.v]=d[u]+e.cost;prev[e.v]=G[u][i];a[e.v]=min(a[u],e.cap-e.flow);if(!vis[e.v]){vis[e.v]=1;q.push(e.v);}}}//vis[u]=0;}if(d[t]==B)return false;int u=t;flow+=a[t];cost+=a[t]*d[t];while(u!=s){edges[prev[u]].flow+=a[t];edges[prev[u]^1].flow-=a[t];u=edges[prev[u]].u;}return true;}void zky(){flow=0;cost=0;while(spfa());cout<<cost<<endl;}int main(){while(cin>>n>>k){G.resize(n*n*2+2);G.clear();tot=0;edges.clear();for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>map[i][j];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){hash[i][j]=++tot;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int u=hash[i][j],v=hash[i][j]+tot;add(u,v,1,map[i][j]);add(v,u,1,-map[i][j]);add(u,v,k,0);add(v,u,0,0);u=v;if(i+1<=n){v=hash[i+1][j];add(u,v,k,0);add(v,u,0,0);}if(j+1<=n){v=hash[i][j+1];add(u,v,k,0);add(v,u,0,0);}}s=0;t=tot*2+1;add(s,hash[1][1],k,0);add(hash[1][1],s,0,0);add(hash[n][n]+tot,t,k,0);add(t,hash[n][n]+tot,0,0);int debugG=0;if(debugG){for(int i=0;i<edges.size();i++){printf("#%d %d -> %d cap:%d cost:%d\n",i,edges[i].u,edges[i].v,edges[i].cap,edges[i].cost);}}zky();}return 0;}
0 0
- 【POJ】【P3422】【Kaka's Matrix Travels】【题解】
- poj Kaka's Matrix Travels
- poj 3422 Kaka's Matrix Travels
- POJ 3422 Kaka's Matrix Travels
- POJ-3422-Kaka's Matrix Travels
- POJ 3422 Kaka's Matrix Travels
- poj Kaka's Matrix Travels 费用流
- POJ 3422 Kaka's Matrix Travels
- POJ 3422 Kaka's Matrix Travels
- POJ 3422 Kaka's Matrix Travels
- POJ 3422:Kaka's Matrix Travels
- poj 3422 Kaka's Matrix Travels
- POJ 3422 Kaka's Matrix Travels
- Kaka's Matrix Travels
- poj3422 Kaka's Matrix Travels
- Poj3422 Kaka's Matrix Travels
- POJ3422 Kaka's Matrix Travels
- POJ3422 Kaka's Matrix Travels
- xcode 编译配置环境变量
- 查找整数
- Fiddler实现手机的抓包
- zend_Application 的几个作用
- 设计模式之设计原则(一)
- 【POJ】【P3422】【Kaka's Matrix Travels】【题解】
- 华为OJ 一个精度问题
- android笔记 - 网络状态判断
- java C++对word的格式转换
- poj 1258 prim
- 大型网站技术架构
- ios push(python编程)
- daliu_IT学习Android笔记第六篇--JDK安装与环境变量配置
- Unite2--problem1 结构体计成绩总均