P3556 [POI 2013] MOR-Tales of seafaring

题目描述

年轻的你喜欢在港口酒馆闲逛,经常听海员们讲述他们的航海故事。 起初,你对所有故事都深信不疑,无论听起来多么不可思议。 但随着时间的推移,你开始产生怀疑。 你决定编写一个程序来验证这些夸张的故事是否可能有一丝真实性。 你认为,虽然你无法判断水手们是否真的经历过那些风暴,但至少可以检查他们的航行路线是否合理。 这不是你能完成的任务,因为你不是程序员,但你还是要完成! 在你所听说的海域中,有 $n$ 个港口和 $m$ 条连接它们的水道。 如果两个港口之间有水道,则可以双向航行。 你收集了 $k$ 个航海故事。每个故事讲述了一名水手从某个港口出发,经过若干水道航行后,到达另一个港口(可能与出发港相同)。水手可能多次航行通过同一水道,每次方向不限。

输入格式

第一行三个整数 $n,m,k(2≤n≤5000,1≤m≤5000,1≤k≤1000000)$,分别表示港口数量、水道数量和故事数量。 接下来 $m$ 行描述水道,每行两个整数 $a,b(1≤a,b≤n,a≠b)$,表示水道连接的两个港口。 接下来 $k$ 行描述故事,每行三个整数 $s,t,d(1≤s,t≤n,1≤d≤1000000000)$,表示水手从港口 $s$ 出发,经过 $d$ 次航行后到达港口 $t$。

输出格式

输出 $k$ 行,对每个故事,如果可能则输出 `TAK`(波兰语的"是"),否则输出 `NIE`(波兰语的"否")。