ACM Computer Factory

Time Limit: 1000MS Memory Limit: 65536K

Total Submissions: 6104 Accepted: 2113 Special Judge

Description

As you know, all the computers used for ACM contests must be identical, so the participants compete on equal terms. That is why all these computers are historically produced at the same factory.

Every ACM computer consists of P parts. When all these parts are present, the computer is ready and can be shipped to one of the numerous ACM contests.

Computer manufacturing is fully automated by using N various machines. Each machine removes some parts from a half-finished computer and adds some new parts (removing of parts is sometimes necessary as the parts cannot be added to a computer in arbitrary order). Each machine is described by its performance (measured in computers per hour), input and output specification.

Input specification describes which parts must be present in a half-finished computer for the machine to be able to operate on it. The specification is a set of P numbers 0, 1 or 2 (one number for each part), where 0 means that corresponding part must not be present, 1 — the part is required, 2 — presence of the part doesn’t matter.

Output specification describes the result of the operation, and is a set of P numbers 0 or 1, where 0 means that the part is absent, 1 — the part is present.

The machines are connected by very fast production lines so that delivery time is negligibly small compared to production time.

After many years of operation the overall performance of the ACM Computer Factory became insufficient for satisfying the growing contest needs. That is why ACM directorate decided to upgrade the factory.

As different machines were installed in different time periods, they were often not optimally connected to the existing factory machines. It was noted that the easiest way to upgrade the factory is to rearrange production lines. ACM directorate decided to entrust you with solving this problem.

Input

Input file contains integers P N, then N descriptions of the machines. The description of ith machine is represented as by 2 P + 1 integers Qi Si,1 Si,2…Si,P Di,1 Di,2…Di,P, where Qi specifies performance, Si,j — input specification for part j, Di,k — output specification for part k.

Constraints

1 ≤ P ≤ 10, 1 ≤ N ≤ 50, 1 ≤ Qi ≤ 10000

Output

Output the maximum possible overall performance, then M — number of connections that must be made, then M descriptions of the connections. Each connection between machines A and B must be described by three positive numbers A B W, where W is the number of computers delivered from A to B per hour.

If several solutions exist, output any of them.

Sample Input

Sample input 1

3 4

15 0 0 0 0 1 0

10 0 0 0 0 1 1

30 0 1 2 1 1 1

3 0 2 1 1 1 1

Sample input 2

3 5

5 0 0 0 0 1 0

100 0 1 0 1 0 1

3 0 1 0 1 1 0

1 1 0 1 1 1 0

300 1 1 2 1 1 1

Sample input 3

2 2

100 0 0 1 0

200 0 1 1 1

Sample Output

Sample output 1

25 2

1 3 15

2 3 10

Sample output 2

4 5

1 3 3

3 5 3

1 2 1

2 4 1

4 5 1

Sample output 3

0 0

Hint

Bold texts appearing in the sample sections are informative and do not form part of the actual data.

Source

Northeastern Europe 2005, Far-Eastern Subregion

题意不好懂啊,看了许多的博客,才渐渐的理解题意了,但大多数的博客都需要拆点,但总感觉不需要,就写了一个简单的Dinic,就AC,是不是数据水啊.

#include <map>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <cstdio>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define PI acos(-1.0)
#define MMM 0x3f3f3f3f
#define RR freopen("input.txt","r",stdin)
#define WW freopen("output.txt","w",stdout) const int INF = 0x3f3f3f3f; struct node
{
int peed;
int in[15];
int out[15];
} Point[55];
int n,m;
int s,t;
int Map[55][55];
int Flow[55][55];
bool vis[55];
bool sign[55][55];
bool BFS()
{
memset(vis,false,sizeof(vis));
memset(sign,false,sizeof(sign));
queue<int>Q;
Q.push(s);
vis[s]=true;
while(!Q.empty())
{
int u=Q.front();
Q.pop();
for(int i=0;i<=t;i++)
{
if(!vis[i]&&Map[u][i])
{
sign[u][i]=true;
vis[i]=true;
Q.push(i);
}
}
}
return vis[t];
}
int DFS(int star,int num)
{
if(star==t||num==0)
{
return num;
}
int s=0;
int ant;
for(int i=0;i<=t;i++)
{
if(sign[star][i]&&(ant=DFS(i,min(Map[star][i],num)))>0)
{
Map[star][i]-=ant;
Map[i][star]+=ant;
Flow[star][i]+=ant;
Flow[i][star]-=ant;
num-=ant;
s+=ant;
if(num==0)
{
break;
}
}
}
return s;
}
int Dinic()
{
memset(Flow,0,sizeof(Flow));
int sum=0;
while(BFS())
{
sum+=DFS(0,INF);
}
return sum;
}
int main()
{
while(~scanf("%d %d",&m,&n))
{
s=0;
t=n+1;
memset(Map,0,sizeof(Map));
for(int i=1; i<=n; i++)
{
scanf("%d",&Point[i].peed);
for(int j=1; j<=m; j++)
{
scanf("%d",&Point[i].in[j]);
}
for(int j=1; j<=m; j++)
{
scanf("%d",&Point[i].out[j]);
}
}
bool flag;
for(int i=1;i<=n;i++)
{
flag=false;
for(int j=1;j<=m;j++)
{
if(Point[i].in[j]==1)
{
flag=true;
break;
}
}
if(!flag)
{
Map[s][i]=Point[i].peed;
}
flag=false;
for(int j=1;j<=m;j++)
{
if(Point[i].out[j]!=1)
{
flag=true;
break;
}
}
if(!flag)
{
Map[i][t]=Point[i].peed;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i!=j)
{
flag=false;
for(int k=1;k<=m;k++)
{
if(Point[i].out[k]!=Point[j].in[k]&&Point[j].in[k]!=2)
{
flag=true;
break;
}
}
if(!flag)
{
Map[i][j]=min(Point[i].peed,Point[j].peed);
}
}
}
}
int sum=Dinic();
int num=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(Flow[i][j]>0)
{
num++;
}
}
}
cout<<sum<<" "<<num<<endl;
for(int i =1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(Flow[i][j]>0)
{
cout<<i<<" "<<j<<" "<<Flow[i][j]<<endl;
}
}
}
}
return 0;
}

ACM Computer Factory的更多相关文章

  1. POJ 3464 ACM Computer Factory

    ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4829 Accepted: 1641 ...

  2. ACM Computer Factory(dinic)

    ACM Computer Factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5596   Accepted: 1 ...

  3. POJ3436 ACM Computer Factory 【最大流】

    ACM Computer Factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5412   Accepted: 1 ...

  4. POJ-3436 ACM Computer Factory(网络流EK)

    As you know, all the computers used for ACM contests must be identical, so the participants compete ...

  5. POJ 3436 ACM Computer Factory (网络流,最大流)

    POJ 3436 ACM Computer Factory (网络流,最大流) Description As you know, all the computers used for ACM cont ...

  6. poj3436 ACM Computer Factory, 最大流,输出路径

    POJ 3436 ACM Computer Factory 电脑公司生产电脑有N个机器.每一个机器单位时间产量为Qi. 电脑由P个部件组成,每一个机器工作时仅仅能把有某些部件的半成品电脑(或什么都没有 ...

  7. POJ3436 ACM Computer Factory(最大流/Dinic)题解

    ACM Computer Factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8944   Accepted: 3 ...

  8. POJ3436:ACM Computer Factory(最大流)

    ACM Computer Factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9963   Accepted: 3 ...

  9. ACM Computer Factory - poj 3436 (最大流)

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5949   Accepted: 2053   Special Judge ...

随机推荐

  1. __int64和long long输入输出

    __int64 num; scanf("%I64d", &num); printf("%I64d\n", num); long long num; sc ...

  2. Codeforce Round #221 Div2

    每次的CF都是一把辛酸泪! 什么时候能打破这局面,昨天做着睡着了! 有时候有的题目也就差一线! 哎,! A:杠杆原理! B:算最后负的和! B:没弄出来当时就脑短路... C:事后写了个n*log(n ...

  3. .vimrc文件配置及航意

    1.  vimrc文件常见语句释义 设定 tab 的位置          :set tabstop=4 输入 tab 时自动将其转化为空格          :set expandtab       ...

  4. ubuntu安装jdk遇到的问题:cannot execute binary file

    安装完jdk,配置好环境变量出现如下状况: cannot execute binary file 问题原因: jdk的位数与ubuntu的系统位数不一致 jdk 64位 ubuntu 32位 然后通过 ...

  5. struts几个配置文件加载顺序_2015.01.04

    struts几个配置文件加载顺序: 01:struts-default.xml 02:struts-plugin.xml 03:struts.xml 04:struts.properties 05:w ...

  6. java冒泡排序算法

    /** * 冒泡排序算法:每次 * @author shaobn * @description 每次都会确定一个最大的值 即固定了,所以会每次-i; */ public class Test1 { p ...

  7. 夺命雷公狗---DEDECMS----17dedecms头条信息的取出

    我们在有些开发时候可能会用到些头条的文章,,添加过程如下所示: 我们在前台遍历数据的时候可以这样, 然后在后台更新首页模版后在去看下首页,效果如下所示:

  8. [MacOS] xcrun: error: active developer path ("/Volumes/Xcode/Xcode6-Beta.app/Contents/Developer") does not exist, use xcode-select to change

    When using MacOS with xcode6-beta, i always meet these error: xcrun: error: active developer path (& ...

  9. C++线性方程求解

    介绍 程序SolveLinearEquations解决联立方程.该方案需要一个文本文件,其中包含输入和输出方程解决.这个项目是几年前我写在C#中http://www.codeproject.com/A ...

  10. selenium滚动条

    element = self.brower.find_element_by_id('xxx')brower.execute_script('arguments[0].scrollIntoView(); ...