您的位置:首页 > 理论基础 > 计算机网络

BestCoder Round #70 Jam's store(网络流)

2016-01-30 23:08 211 查看
题解:一道经典的费用流的构图,我们想想,这个点排在另一个点后面的话,只是被另一个点影响了罢了。那么这个构图就巧妙了,因为N不大,所以我们可以把修电脑的人都拆成NN个点,每个点表示是倒数第几个顾客修的。那大家试想一下,比如说我第一个修电脑的,我现在是倒数第二个来找这个人,那么我只影响我后面的一个和自己,所以的话修一条费用为Tij*2Tij∗2,流量为11的边流过去就好了。可能还有不明白的自己好好理一下,之后每个拆点都直接连到汇点。前面的话就是起点连到每个顾客,然后修电脑的人连到每个拆点,当流量满流的时候就表示每个顾客要做的都流完了,当然这样子还有保证准确性,因为时间都是正数,所以的话缩小流就保证了在每个人都会从流量小也就是倒数第一个留起



Jam's store

Accepts: 15

Submissions: 42

Time Limit: 2000/1000 MS (Java/Others)

Memory Limit: 65536/65536 K (Java/Others)

问题描述
Jam不好好学习,然后就去帮别人修电脑了,在一家店里,有MM个店员,现在有NN个顾客,给出每个顾客对应给每个店员的修电脑的时间为T_{ij}T​ij​​,问所有顾客要等待的最少时间。当然,一个顾客在某个店员那里完成之后,那个店员才会执行下一个顾客的任务


输入描述
第一行T(1 \leq T \leq 100)T(1≤T≤100),表示TT组数据。
接下来TT组数据:
每组数据第一行为M,N(1 \leq M,N \leq 20)M,N(1≤M,N≤20)表示店员数和顾客数
接下来NN行MM列,每个整数表示第ii个顾客找第jj个店员的时间(1 \leq T_{ij} \leq 1000)(1≤T​ij​​≤1000)


输出描述
输出一个数,表示用时总时间


输入样例
1
4 3
4 4 1 5
8 2 5 6
4 5 10 5


输出样例
7


Hint
第1个顾客选择第3个员工
第2个顾客选择第2个员工
第3个顾客选择第1个员工
一共花费4+2+1=7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: