[SDOI2009]晨跑
来源:互联网 发布:淘宝销量代码 编辑:程序博客网 时间:2024/05/16 15:35
看懂题意就很简单了233以前语文差的看不懂题意
将每个点拆成出点入点,流量为1费用为0,控制每个点经过一次,然后最小费用最大流
Code:
#include <cstdio>#include <queue>#include <cstring>#include <bitset>using namespace std;#define M 100001#define N 10001#define INF (0x7FFFFFFF)#define S(x) (x<<1)#define T(x) ((x<<1)-1)struct E{int to, f, c, next, op;}G[M];int point[N], cnt, S, T, f, n, m, cost, D[N], path[N], prev[N];bitset<N> vis;queue<int> Q;inline void add(int u, int v, int f, int c){cnt++, G[cnt] = (E){v, f, c, point[u], cnt+1}, point[u] = cnt;cnt++, G[cnt] = (E){u, 0, -c, point[v], cnt-1}, point[v] = cnt;}inline bool spfa(){for (int i = S;i <= T; ++i)D[i] = INF;D[S] = 0;vis[S] = 1;prev[S] = -1;Q.push(S);while (!Q.empty()){int u = Q.front();Q.pop();for (int i = point[u];i;i = G[i].next){int v = G[i].to;if (G[i].f > 0 && D[v] > D[u] + G[i].c){D[v] = D[u] + G[i].c;path[v] = i;prev[v] = u;if (!vis[v])vis[v] = 1, Q.push(v);}}vis[u] = 0;}return D[T] != INF;}inline int argument(){int delta(INF), i, j, res(0);for (i = T;prev[i] != -1;i = prev[i]){j = path[i];delta = min(delta, G[j].f);}f += delta;for (i = T;prev[i] != -1;i = prev[i]){j = path[i];G[j].f -= delta;G[G[j].op].f += delta;res += delta * G[j].c;}return res;}int main(){scanf("%d %d", &n, &m);S = T(1), T = S(n);for (int i = 1;i <= m; ++i){int a, b, c, x(1), y(n);scanf("%d %d %d", &a, &b, &c);x = T(a), y = S(b);add(x, y, 1, c);}for (int i = 1;i <= n; ++i)if (i != 1 && i != n)add(S(i), T(i), 1, 0);while (spfa())cost += argument();printf("%d %d\n", f, cost);}
0 0
- [SDOI2009]晨跑
- SDOI2009 晨跑
- SDOI2009晨跑
- “[SDOI2009] 晨跑”
- [BZOJ 1877][SDOI2009]晨跑
- 【BZOJ 1877】 [SDOI2009]晨跑
- [BZOJ1877][SDOI2009]晨跑
- bzoj 1877: [SDOI2009]晨跑
- 1877: [SDOI2009]晨跑
- codevs2306晨跑(SDOI2009)
- 【SDOI2009】【BZOJ1877】晨跑
- 【BZOJ 1877】 [SDOI2009]晨跑
- bzoj 1877: [SDOI2009]晨跑
- BZOJ1877: [SDOI2009]晨跑
- BZOJ 1877: [SDOI2009]晨跑
- BZOJ P1877[SDOI2009]晨跑
- 洛谷 P2153 [SDOI2009]晨跑
- bzoj1877 [SDOI2009]晨跑
- 极路由2-极贰9007的降级root攻略
- C语言中union与大小端模式的理解
- Balanced Binary Tree
- json预习与自学
- javascript简易日历
- [SDOI2009]晨跑
- Installing VMware Tools in a Linux virtual machine using a Compiler (1018414)
- 跟我一起写makefile二
- 跟我一起写makefile三
- 十一月总结
- 跟我一起写makefile四
- 练手小项目(5)安全卫士_利用内容提供者进行短信备份 修正版
- 跟我一起写makefile 五
- valgrind用法