#P50227. 「JSOI2016」飞机调度

「JSOI2016」飞机调度

题目描述

JSOI 王国里有 NN 个机场,编号为 11NN。从 ii 号机场到 jj 号机场需要飞行 Ti,jT_{i, j} 的时间。由于风向,地理位置和航空管制的因素, Ti,jT_{i, j}Tj,iT_{j, i} 并不一定相同。

此外,由于飞机降落之后需要例行维修和加油。当一架飞机降落 kk 号机场时,需要花费 PkP_k​​ 的维护时间才能再次起飞。

JS Airways 一共运营 MM 条航线,其中第 ii 条直飞航线需要在 DiD_i 时刻从 XiX_i 机场起飞,不经停,飞往 YiY_i 机场。

为了简化问题,我们假设 JS Airway 可以在 00 时刻在任意机场布置任意多架加油维护完毕的飞机;为了减少飞机的使用数,我们允许 JS Airways 增开任意多条临时航线以满足飞机的调度需求。

JYY 想知道,理论上 JS Airways 最少需要多少架飞机才能完成所有这 MM 个航班。

输入格式

第一行包含两个正整数 N,MN,M
接下来一行包含 NN 个正整数表示每一个机场的飞机维护时间;
接下来 NN 行,每行 NN 个非负整数,其中第 ii 行第 jj 个非负整数为 Ti,jT_{i,j},表示从 ii 号机场飞往 jj 号机场所需要花费的时间。数据保证 Ti,i=0T_{i,i}=0
接下来 MM 行,每行三个正整数,其中第 ii 行为 Xi,Yi,DiX_i,Y_i,D_i,表示第 ii 条航线的起飞机场,降落机场,以及起飞时间。数据保证 XiYiX_i\not =Y_i

输出格式

一行一个正整数,表示 JS Airways 理论上最少需要的飞机数。

样例 1

3 3
100 1 1
0 1 1
1 0 5
2 1 0
1 2 1
2 1 1
3 1 9
2

在第一个样例中,JS Airways 可以在 00 时刻在 22 号机场安排一架飞机并执飞第 22 条航线(212\to 1)。此外还需要在 00 时刻在 11 号机场安排一架飞机,这架飞机首先执飞第 11 条航线(121\to 2),然后通过临时新增一条航线从 22 号机场起飞飞往 33 号机场,降落 33 号机场之后执飞第 33 条航线(313\to 1)。

3 3
100 1 1
0 1 1
1 0 5
2 1 0
1 2 1
2 1 1
3 1 8
3

在第二个样例中,执行完第 11 条航线的飞机无法赶上第 33 条航线的起飞时间,因此 JS Airways 必须使用 33 架不同的飞机才能完成所有的航班。

数据范围与提示

对于 30%30\% 的数据,满足 N,M10N,M\le 10
对于 60%60\% 的数据,满足 N,M100N,M\le 100
对于全部数据,满足 1N,M500,0Pi,Ti,j106,1Di1061\le N,M\le 500,0\le P_i,T_{i,j}\le 10^6,1\le D_i\le 10^6