问题描述
有 N 座城市。还有连接不同城市的单程直飞航班。
直飞航班的可用性由 N 个长度为 N 的字符串 S1,S2,…,SN 表示。如果 Si 的 j 个字符是 Y,则有从城市 i 到城市 j 的直飞航班;如果是 N,则没有。
每个城市都出售纪念品;城市 i 出售价值 Ai 的纪念品。
拓拓目前在城市 S ,想去城市 T (与城市 S 不同)。(与城市 S 不同)。 他每次去一个城市(包括 S 和 T ),都会在那里买一件纪念品。
如果从城市 S 到城市 T 有多条路线,拓拓决定路线如下:
确定他是否可以乘坐直飞航班从城市 S 前往城市 T 。如果可以,求满足上述条件的路线中的 "直飞航班数 "和 "纪念品总价值"。
给你 Q 对 (Ui,Vi) 不同的城市。
当 S=Ui 和 T=Vi 时,请为每个 1≤i≤Q 输出上述问题的答案。
输入格式
第一行一个整数 N。
第二行 N 个整数,A1,A2,...,AN。
接下来 N 行,N 个长度为 N 的字符串。
第 N+3 行一个整数 Q,表示 Q 次询问。
最后 Q 行,每行两个整数 Ui 和 Vi。
输出格式
输出 Q 行,如果他不能从城市 Ui 前往城市 Vi ,则第 i 行应输出 Impossible;如果可以,则该行应包含按上述路线选择的 "直飞航班数量 "和 "纪念品总价值",按此顺序排列,中间用空格隔开。
样例
5
30 50 70 20 60
NYYNN
NNYNN
NNNYY
YNNNN
YNNNN
3
1 3
3 1
4 5
1 100
2 160
3 180
对于 (S,T)=(U1,V1)=(1,3) 来说,有一个从城市 1 到城市 3 的直达航班,所以直达航班的最少可能数量是 1 ,当他使用该直达航班时,就达到了这个数量。在这种情况下,纪念品的总价值为 A1+A3=30+70=100 。
对于 (S,T)=(U2,V2)=(3,1) ,直飞航班的最少可能数量为 2 。以下两条线路达到了最小值:城市 3→4→1 和城市 3→5→1 。由于这两条路线的纪念品总价值分别为 70+20+30=120 和 70+60+30=160 ,所以他选择了后一条路线,纪念品的总价值为 160 。
对于 (S,T)=(U3,V3)=(4,5) ,当他前往城市 4→1→3→5 时,直达航班的数量最少,纪念品的总价值为 20+30+70+60=180 。
2
100 100
NN
NN
1
1 2
Impossible
数据范围
- 2≤N≤300
- 1≤Ai≤109
- Si 是一个长度为 N 的字符串,由
Y 和 N 组成。
- Si 的 i -th 字符是
N。
- 1≤Q≤N(N−1)
- 1≤Ui,Vi≤N
- Ui=Vi
- 如果是 i=j ,那么就是 (Ui,Vi)=(Uj,VJ) 。
- N,Ai,Q,Ui 和 Vi 都是整数。