[poj_3469]多核CPU


Sample Input
3 1
1 10
2 10
10 3
2 3 1000
Sample Output
13 最小割,把模块看做点,建源点s和汇点t,以下(a,b,c)表示从a向b连一条容量为c的边
记在核A上的执行的模块集合为S,在核B上的执行的模块集合为T,花费的总和为

对于,这是该模块在A核花费的费用,连一条(i,t,Ai)的边
对于
,这是该模块在A核花费的费用,连一条(s,i,Bi)的边
对于
,这是ai模块在A核,bi模块在B核的费用,连一条(ai,bi,wi)的边
对于,这是ai模块在B核,bi模块在A核的费用,连一条(bi,ai,wi)的边
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int INF=;
int r,c,d;int n,m;
struct data{
int next,to,cap;
}g[];
int iter[],h[],level[],k=,head,tail,q[];
inline int read(){
int x; bool f; char c;
for (f=; (c=getchar())<''||c>''; f=c=='-');
for (x=c-''; (c=getchar())>=''&&c<=''; x=(x<<)+(x<<)+c-'');
return f?-x:x;
}
void add(int from,int to,int cap)
{
g[++k].next=h[from];h[from]=k;g[k].to=to;g[k].cap=cap;
g[++k].next=h[to];h[to]=k;g[k].to=from;g[k].cap=;
}
void bfs(int s)
{
memset(level,,sizeof(level));
head=tail=;q[tail++]=s;level[s]=;
while(head!=tail)
{
int u=q[head++];
for(int i=h[u];i;i=g[i].next)
{
if(!level[g[i].to]&&g[i].cap)
{
level[g[i].to]=level[u]+;q[tail++]=g[i].to;
}
}
} }
int dfs(int u,int t,int f)
{
if(u==t)return f;
int used=,w;
for(int &i=iter[u];i;i=g[i].next)
{
if(g[i].cap&&level[g[i].to]==level[u]+)
{
w=f-used;w=dfs(g[i].to,t,min(w,g[i].cap));
if(w)
{
g[i].cap-=w;g[i^].cap+=w;used+=w;if(used==f)return f;
}
}
}
return used;
}
int dinic(int s,int t)
{
int flow=;
for(;;)
{
for(int i=;i<=n+;i++)iter[i]=h[i];
bfs(s);if(!level[t])return flow;
flow+=dfs(s,t,INF);
}
}
int main()
{
n=read();m=read();int S=,T=n+;
for(int i=;i<=n;i++)
{
int a=read(),b=read();
add(S,i,b);add(i,T,a);
}
for(int i=;i<=m;i++)
{
int a=read(),b=read(),w=read();
add(a,b,w);add(b,a,w);
}
printf("%d",dinic(S,T));
return ;
}
[poj_3469]多核CPU的更多相关文章
- linux top命令查看内存及多核CPU的使用讲述
查看多核CPU命令 mpstat -P ALL 和 sar -P ALL 说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txt top命令 经常用来监控l ...
- paip.提升性能--多核cpu中的java/.net/php/c++编程
paip.提升性能--多核cpu中的java/.net/php/c++编程 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- linux多核cpu下的负载查看
linux下使用top命令或uptime命令 单核cpu下,负载超过0.7即意味着瓶颈,多核cpu下按核数*0.7计算负载 如2核,1.4可能即意味着负载较吃力了 查看核数 grep 'model n ...
- 记录一个多核CPU负载不均衡问题(动态绑定进程到指定cpu:taskset -pc $CPU $PID)
昨晚和一位读者朋友讨论了一个问题:在一台多核 CPU 的 Web 服务器上,存在负载不均衡问题,其中 CPU0 的负载明显高于其它 CPUx,进一步调查表明 PHP-FPM 的嫌疑很大.话说以前我曾经 ...
- <转>如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
原文链接:http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB) ...
- 如何利用多核CPU来加速你的Linux命令
原文出处: rankfocus 译文出处: 外刊IT评论 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能 ...
- 浅谈多核CPU、多线程、多进程
1.CPU发展趋势 核心数目依旧会越来越多,依据摩尔定律,由于单个核心性能提升有着严重的瓶颈问题,普通的桌面PC有望在2017年末2018年初达到24核心(或者16核32线程),我们如何来面对这突如其 ...
- 转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或 ...
- 【转】多核CPU运行模式
多核CPU运行模式主要有以下三种: •非对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiat ...
随机推荐
- iOS常用控件-UIScrollView
一. 常见属性 @property (nonatomic) CGPoint contentOffset; //记录UIScrollView滚动的位置 @pro ...
- 第一章:Hello, World!
感谢作者 –> 原文链接 本文翻译自The Flask Mega-Tutorial Part I: Hello, World! 一趟愉快的学习之旅即将开始,跟随它你将学会用Python和Flas ...
- JVM——九大工具助你玩转Java性能优化
本文转载自 http://www.importnew.com/12324.html 本文由 ImportNew - 陈 晓舜 翻译自 idrsolutions.欢迎加入翻译小组.转载请参见文章末尾的要 ...
- Android弹出输入提示框--PopupWindow实现
前言 之前直接用Dialog实现了弹出对话框.现在尝试用更好地解决方案--PopupWindow类--来实现 1.首先搞一个弹出框布局,和之前类似. 这样的东西,它的布局是这样: 1 <?xm ...
- java练习题——数组
上述代码可以顺利通过编译,并且输出一个“很奇怪”的结果:[Ljava.lang.Object;@2a139a55 为什么会出现这种情况? 直接输出object的对象,系统会输出地址,如果想要输出其中的 ...
- 斐波那契数列(递归)&求100以内的素数
Java 5 添加了 java.util.Scanner 类,这是一个用于扫描输入文本的新的实用程序.它是以 前的 StringTokenizer 和 Matcher 类之间的某种结合.由于任何数据都 ...
- Java中的初始化详细解析
今天所要详细讲解的是Java中的初始化,也就是new对象的过程中,其程序的行走流程. 先说没有静态成员变量和静态代码块的情况. public class NormalInit { public sta ...
- 将有效慢日志转存到数据库v2
import re import sys import getopt import MySQLdb from subprocess import call import os host='10.76. ...
- 《Cracking the Coding Interview》——第14章:Java——题目3
2014-04-26 18:59 题目:final.finally.finalize有什么区别? 解法:烂大街之java语法题.此题被多少公司考过我不知道,反正我确实遇见过一次了. 代码: // 14 ...
- github+git提交 基础用法
git版本管理基本用法: 安装就不用说了 随便一搜 安装完 妥妥的.下边说的是在github从新建一个项目开始: 1.首先打开自己的github地址,如下图所示 点加号 选 New repositor ...
,这是该模块在A核花费的费用,连一条(i,t,Ai)的边
,这是ai模块在B核,bi模块在A核的费用,连一条(bi,ai,wi)的边