【CSUOJ 1623】Inspectors
2015-05-18 15:14
267 查看
对每一个点进行拆点,并且每个入点和出点的容量设为1,因为每个点的出度与入度都为1且不存在自己连自己的边,故最后得到的图都为环。跑最小费用流就好了e
代码如下:
代码如下:
#include<cstdio> #include<queue> #include<cstring> #include<algorithm> using namespace std; const int N = 222; const int M = 11111; const int INF = 1e9; struct edge{ int to,next; int cap,flow,cost; }e[M << 1]; int head ,sz,res; bool inq ; int p ,d ,a ; void addedge(int u,int v,int cap,int cost){ e[sz].to = v;e[sz].next = head[u]; e[sz].cap = cap;e[sz].flow = 0;e[sz].cost = cost; head[u] = sz ++; e[sz].to = u;e[sz].next = head[v]; e[sz].cap = 0;e[sz].flow = 0;e[sz].cost = -cost; head[v] = sz ++; } void init(){ memset(head,-1,sizeof(head)); sz = 0; } int SPFA(int s,int t){ queue<int> Q; memset(inq,0,sizeof(inq)); for(int i = 1 ; i <= t ; i ++) d[i] = INF; inq[s] = 1;d[s] = 0;p[s] = -1; a[s] = INF; Q.push(s); while(!Q.empty()){ int u = Q.front();Q.pop(); inq[u] = 0; for(int i = head[u] ; i != -1 ; i = e[i].next){ int v = e[i].to; if(e[i].cap - e[i].flow > 0 && e[i].cost + d[u] < d[v]){ d[v] = d[u] + e[i].cost; a[v] = min(e[i].cap - e[i].flow,a[u]); p[v] = i; if(!inq[v]){ inq[v] = 1; Q.push(v); } } } } int u = t; if(d[t] == INF) return 0; res += d[t] * a[t]; while(u != s){ e[ p[u] ].flow += a[t]; e[ p[u] ^ 1 ].flow -= a[t]; u = e[ p[u] ^ 1 ].to; } return 1; } int txt = 1; void MCMF(int s,int t){ res = 0; while(SPFA(s,t)); printf("Case %d: %d\n",txt ++,res); } void solve(){ init(); int s,t,c,n; scanf("%d",&n); s = 2 * n + 1;t = 2 * n + 2; for(int i = 1 ; i <= n ; i ++){ addedge(s,i,1,0); addedge(i + n,t,1,0); } for(int i = 1 ; i < n ; i ++){ for(int j = i + 1 ; j <= n ; j ++){ scanf("%d",&c); addedge(i,j + n,1,c); addedge(j,i + n,1,c); } } MCMF(s,t); } int main() { int _; scanf("%d",&_); while(_--) solve(); return 0; }
相关文章推荐
- CSU 1623 Inspectors(二分图最大权匹配 KM算法)(UVAlive 6879)
- 【网络流】 csu 1623 Inspectors
- CSUOJ 1196- Staginner 去爬山
- CSUOJ 1299 - Number Transformation II 打表预处理水DP
- csuoj 1355: 地雷清除计划
- [杂题]CSUOJ1413 Area of a Fractal
- csuoj 1328: 近似回文词
- CSUOJ 1638 Continued Fraction
- uva 1623——Enter The Dragon
- BZOJ_1623:_[Usaco2008_Open]_Cow_Cars_奶牛飞车_(贪心)
- ZCMU—1623
- CSUOJ-1044: 扑克排序
- csuoj1640机智的刷题方式(背包)
- 2017-2018-1 1623 bug终结者 冲刺005
- CSUOJ 1560 图书管理员的表白方式
- CSUOJ 1208-排队
- CSUOJ 1302 - Walking on Chessboard 暴力BFS
- Aizu 2164 CSUOJ 1436 Revenge of the Round Table
- [杂题]CSUOJ1276 Counting Route Sequence
- csuoj 1329: 一行盒子