这一次旅途,小航在蝈蝈大会上从普朗特先生那里获得了一份普朗特穿梭航空的所有航线图。
普朗特穿梭航空的航班都是单向的,一趟航班连接了A、B两座城市,也就是说,一趟航班只能从A出发飞到B。除此之外,为了"Make (Prumpt Shuffle) Airlines Great Again (MAGA)",普朗特先生特别将一趟航班的价格设为出发地和到达地落地价格的和。他认为这样是为了人民的飞行从此不同。
第一行共有三个整数,
,
,分别表示小航要选出
趟航班,可到达的城市数量
, 以及可供选择的航班的数量
。城市的编号为
到
。
接下来
行共有
个整数
,表示降落在第
个城市的价格。
每组数据的第行至
行,描述一趟航班的起点和终点。
的范围较大,因此输入文件较大,请使用较快的输入输出方式。
在这里给出一份快速读入模板:namespace ae86 {const int bufl = 1<< 15;char buf[bufl], *s = buf, *t = buf;inline int fetch() {if (s == t) {t = (s = buf) + fread(buf, 1, bufl, stdin);if (s == t) return EOF;}return *s++;}inline int read() {int a = 0, b = 1, c = fetch();while(!isdigit(c)) b ^= c == '-', c = fetch();while(isdigit(c)) a = a * 10+ c - 48, c = fetch();return b ? a : -a;}}using ae86::read;
输出文件共 1 行,为最小价格和。若无法选出符合要求的条路径,则输出 NONE
对于所有的数据,保证
对于
的数据,满足
对于
的数据,满足