lqb#P22110. 宝石收集

宝石收集

题目描述

小蓝最近迷上了一款收集宝石的游戏, 在游戏中给出了一幅藏宝图, 藏宝图可以看做是由 nn 个顶点组成的一个有向图, 顶点编号为 0,1,2,,n10,1,2,⋯,n-1。每个顶点有且仅有一颗宝石, 可能是红宝石或蓝宝石。

小蓝有一次收集宝石的机会, 他可以任意选择一个顶点当做起点, 沿着有向边前进, 经过的顶点上的宝石都会被自动收集(包括起点和终点), 直到前方无路可走或者小蓝想退出时停止本次收集。

小蓝可以多次经过同一个顶点, 但只会在第一次到达顶点时获得宝石, 后面再次到达时不会再获得宝石。

收集结束后, 小蓝可以用手中的宝石合成紫晶宝石:一颗红宝石加一颗蓝宝石就可以合成一颗紫晶宝石。

小蓝想在收集结束后合成尽可能多的紫晶宝石, 请帮他规划出一条最优路径, 告诉他最多可以合成多少颗紫晶宝石。

输入格式

输入的第一行包含一个整数 nn,表示有顶点的个数。

第二行包含一个由 0011 组成的长度为 nn 的字符串,从左至右依次表示第 00n1n−1 个顶点处宝石的种类:

0 表示红宝石,1 表示蓝宝石。

第三行包含一个整数 mm,表示图中有 mm 条有向边。

接下来 mm 行,每行包含两个整数 sstt,用一个空格分隔,表示一条从 sstt 的有向边。

输出格式

输出一行包含一个整数,表示小蓝最多能合成几颗紫晶宝石。

6
000111
6
0 1
1 2
3 1
2 3
2 4
2 5
2

解释 #1

选择 00 号顶点作为起点,按照 01231240→1→2→3→1→2→4 的行进路线,可以获得 33 颗红宝石和 22 颗蓝宝石,最终可以合成 22 颗紫晶宝石;

他也可以按照 1231241→2→3→1→2→4 行进,结果也是 22。找不到比 22 更大的答案了。

数据范围

对于所有的评测用例:1n2000,0m105,0sn1,0tn11 ≤ n ≤ 2000,0 ≤ m ≤ 10^5,0 ≤ s ≤ n−1,0 ≤ t ≤ n−1