题目链接

好裸的题.......

两个cpu分别作为源点和汇点, 每个cpu向元件连边, 权值为题目所给的两个值, 如果两个元件之间有关系, 就在这两个元件之间连边, 权值为消耗,这里的边应该是双向边。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define mem(a) memset(a, 0, sizeof(a))
  4. const int maxn = 3e5+;
  5. int head[maxn*], s, t, num, q[maxn*], dis[maxn];
  6. struct node
  7. {
  8. int to, nextt, c;
  9. }e[maxn*];
  10. void init() {
  11. mem1(head);
  12. num = ;
  13. }
  14. void add(int u, int v, int c) {
  15. e[num].to = v; e[num].nextt = head[u]; e[num].c = c; head[u] = num++;
  16. }
  17. int bfs() {
  18. int u, v, st = , ed = ;
  19. mem(dis);
  20. dis[s] = ;
  21. q[ed++] = s;
  22. while(st<ed) {
  23. u = q[st++];
  24. for(int i = head[u]; ~i; i = e[i].nextt) {
  25. v = e[i].to;
  26. if(e[i].c&&!dis[v]) {
  27. dis[v] = dis[u]+;
  28. if(v == t)
  29. return ;
  30. q[ed++] = v;
  31. }
  32. }
  33. }
  34. return ;
  35. }
  36. int dfs(int u, int limit) {
  37. if(u == t)
  38. return limit;
  39. int cost = ;
  40. for(int i = head[u]; ~i; i = e[i].nextt) {
  41. int v = e[i].to;
  42. if(e[i].c&&dis[u] == dis[v]-) {
  43. int tmp = dfs(v, min(limit-cost, e[i].c));
  44. if(tmp>) {
  45. e[i].c -= tmp;
  46. e[i^].c += tmp;
  47. cost += tmp;
  48. if(cost == limit)
  49. break;
  50. } else {
  51. dis[v] = -;
  52. }
  53. }
  54. }
  55. return cost;
  56. }
  57. int dinic() {
  58. int ans = ;
  59. while(bfs()) {
  60. ans += dfs(s, inf);
  61. }
  62. return ans;
  63. }
  64. int main()
  65. {
  66. int n, m, x, y, z;
  67. while(~scanf("%d%d", &n, &m)) {
  68. s = , t = n+;
  69. init();
  70. for(int i = ; i<=n; i++) {
  71. scanf("%d%d", &x, &y);
  72. add(s, i, x);
  73. add(i, s, );
  74. add(i, t, y);
  75. add(t, i, );
  76. }
  77. while(m--) {
  78. scanf("%d%d%d", &x, &y, &z);
  79. add(x, y, z);
  80. add(y, x, z);
  81. }
  82. printf("%d\n", dinic());
  83. }
  84. }

poj 3469 Dual Core CPU 最小割的更多相关文章

  1. poj 3469 Dual Core CPU——最小割

    题目:http://poj.org/problem?id=3469 最小割裸题. 那个限制就是在 i.j 之间连双向边. 根据本题能引出网络流中二元关系的种种. 别忘了写 if ( x==n+1 ) ...

  2. POJ 3469 Dual Core CPU (最小割建模)

    题意 现在有n个任务,两个机器A和B,每个任务要么在A上完成,要么在B上完成,而且知道每个任务在A和B机器上完成所需要的费用.然后再给m行,每行 a,b,w三个数字.表示如果a任务和b任务不在同一个机 ...

  3. 【网络流#8】POJ 3469 Dual Core CPU 最小割【ISAP模板】 - 《挑战程序设计竞赛》例题

    [题意]有n个程序,分别在两个内核中运行,程序i在内核A上运行代价为ai,在内核B上运行的代价为bi,现在有程序间数据交换,如果两个程序在同一核上运行,则不产生额外代价,在不同核上运行则产生Cij的额 ...

  4. poj 3469 Dual Core CPU【求最小割容量】

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 21453   Accepted: 9297 ...

  5. POJ 3469.Dual Core CPU 最大流dinic算法模板

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 24830   Accepted: 10756 ...

  6. POJ 3469 Dual Core CPU Dual Core CPU

    Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 23780   Accepted: 10338 Case Time Lim ...

  7. POJ 3469(Dual Core CPU-最小割)[Template:网络流dinic V2]

    Language: Default Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 19321 ...

  8. POJ 3469 Dual Core CPU(最小割)

    [题目链接] http://poj.org/problem?id=3469 [题目大意] 有N个模块要在A,B两台机器上执行,在不同机器上有不同的花费 另有M个模块组(a,b),如果a和b在同一台机子 ...

  9. POJ - 3469 Dual Core CPU (最小割)

    (点击此处查看原题) 题意介绍 在一个由核A和核B组成的双核CPU上执行N个任务,任务i在核A上执行,花费Ai,在核B上执行,花费为Bi,而某两个任务之间可能需要进数据交互,如果两个任务在同一个核上执 ...

随机推荐

  1. Windows Server 2008 安装好之后的简单配置

    1.禁用密码复杂度 在运行中输入GPEDIT.MSC 打开组策略,找到计算机配置->Windows设置->安全设置->账户策略中的密码策略,将“密码必须符合复杂性要求”设置为禁用即可 ...

  2. 跨域文件crossdomain.xml在weblogic上的部署

    1.新建一个ROOT文件夹,把crossdomain.xml拷贝到这个文件夹下. 2.在ROOT文件夹下新建一个WEB-INF文件夹 3.在WEB-INF文件夹下建立一个weblogic.xml文件, ...

  3. Java学习之Java实现CallBack功能

    回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数.而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在 ...

  4. vb listview 的常用操作

    常用操作:获取当前行数和列数: MsgBox "行数:" & ListView1.ListItems.Count & "列数:" & L ...

  5. verilog 随笔

    不是说你在代码里定义一个reg型变量,综合器就会综合处一个寄存器来,case必须在always块里,always里面的被赋值变量必须是reg型,这是语法的规定,只能遵守.写代码的时候不要加入触发器(不 ...

  6. asp.net mvc 注册中的邮箱激活功能实现(一)

    基本流程图 注册页面就不再写出,现在将发送邮件的代码粘贴出来 public ActionResult SendEmial() { ; string validataCode = System.Guid ...

  7. windbg命令学习4

    4.查看调用栈 k命令:显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256. 我们如何来判断函数的栈指针,参数地址和局部变量地址呢? 举一个简单的windbg的k ...

  8. poj1617---columnar encryption

    题意:给出keyword,如BATBOY,A的ascii值最小,所以第二列最先输出,B有两个,左边的先输出,也就是说,接下来输出第一列和第4列, 所以每一个字母都带有一个ascii值和一个序号,用结构 ...

  9. saiku中默认级别all的国际化

    在制作saiku的schema文件的时候,当你选择层次的属性hasAll为true的时候,系统默认会为你的层次添加一个“(all)”级别,你无法给它增加一个caption属性来国际化它,因为他不是你创 ...

  10. Android在应用中依据包名启动另外一个APP

    以下为TestIntentData工程 MainActivity如下: package cn.testintentdata; import java.util.List; import android ...