题目名称 1833. [国家集训队2011]复杂的大门
输入输出 gate.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 20
题目来源 Gravatarcstdio 于2014-12-02加入
开放分组 全部用户
提交状态
分类标签
最短路 网络流
分享题解
通过:9, 提交:15, 通过率:60%
GravatarAntiLeaf 100 0.068 s 12.50 MiB C++
Gravatar真呆菌 100 0.075 s 7.10 MiB C++
Gravatar하루Kiev 100 0.100 s 0.77 MiB C++
GravatarStu.yxr 100 0.102 s 3.41 MiB C++
Gravatar_Horizon 100 0.103 s 11.96 MiB C++
Gravatarcstdio 100 0.119 s 0.71 MiB C++
Gravatar炎帝 100 0.135 s 0.71 MiB C++
Gravatar_Itachi 100 0.145 s 22.28 MiB C++
Gravatarmikumikumi 100 0.261 s 2.60 MiB C++
Gravatarmikumikumi 50 0.772 s 1.23 MiB C++
关于 复杂的大门 的近10条评论(全部评论)
理论上是平面图最大流转最短路,但……
“网络流的时间复杂度估计是很悲观的”——光神@闫星光
Gravatarcstdio
2014-12-03 08:55 1楼

1833. [国家集训队2011]复杂的大门

★★☆   输入文件:gate.in   输出文件:gate.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

你去找某bm玩,到了门口才发现要打开他家的大门不是一件容易的事……

他家的大门外有n个站台,用1到n的正整数编号。你需要对每个站台访问一定次数以后大门才能开启。站台之间有m个单向的传送门,通过传送门到达另一个站台不需要花费任何代价。而如果不通过传送门,你就需要乘坐公共汽车,并花费1单位的钱。值得庆幸的是,任意两个站台之间都有公共汽车直达。

现在给你每个站台必须访问的次数Fi,对于站台i,你必须恰好访问Fi次(不能超过)。

我们用u、v、w三个参数描述一个传送门,表示从站台u到站台v有一个最多可以使用w次的传送门(不一定要使用w次)。值得注意的是,对于任意一对传送门(u1,v1)和(u2,v2),如果有u1 < u2,则有v1 ≤ v2;如果有v1 < v2,则有u1 ≤ u2;且u1 = u2和v1 = v2不同时成立。

你可以从任意的站台开始,从任意的站台结束。出发去开始的站台需要花费1单位的钱。你需要求出打开大门最少需要花费多少单位的钱。

【输入格式】

第一行包含两个正整数n、m,意义见题目描述。

第二行包含n个正整数,第i个数表示Fi。

接下来有m行,每行有三个正整数u、v、w,表示从u到v有一个可以使用w次的传送门。

【输出格式】

输出一行一个整数,表示打开大门最少花费的钱数。

【样例输入】

4 3

5 5 5 5

1 2 1

3 2 1

3 4 1

【样例输出】

17

【提示】

有20%的数据满足n ≤ 10,m ≤ 50;对于所有的w、Fi,满足1 ≤ w,Fi ≤ 10;有50%的数据满足n ≤ 1000,m ≤ 10000;

对于100%的数据满足1 ≤ n ≤ 10000,1 ≤ m ≤ 100000;

对于所有的u、v,满足1 ≤ u, v ≤ n,u ≠ v;

对于所有的w、Fi,满足1 ≤ w,Fi ≤ 50000;

以上的每类数据中都存在50%的数据满足对于所有的w、Fi,有w = Fi = 1。

【来源】

集训队互测2011 陈许旻