#H1039. Travel
Travel
题目背景
读史使人明智。
题目描述
小 D 是一名旅行者。一天,他到了一个神奇的国家旅游。
这个地方有着悠久的历史。在漫长的历史中,涌现了无数的小国,每一个城市都属于一个小国,这些小国在属于自己的城市中修建了单向的道路。使得这些城市互相可达。小国不断的扩张,但是每一个城市只属于一个小国。而且小国是尽量大的。
后来这个地区迎来了大一统时期。一位贤明的君王建造了一些城市,在新修建的城市与原来的小国建造的单向道路中间修建了一些双向道路。贤明的君王用了最少的道路完成了这项艰巨的任务。
小 D 作为一名资深的旅游者,事先从他的好朋友 Eddie 手中拿到了地图。遗憾的是,这张地图中只显示了单向道路。对于双向的后来建成的道路,只显示了一个方向。
小 D 来到这个国家后想去观赏不同的景观。但是小 D 还有任务在身。因此他只能在完成任务的同时参观景点。
在每一次旅行中,小 D 将会从 地到 地,途中他可以经过任意一个城市任意多次。但是每次他都必须按照真实的单向道路/双向道路行走。而且对于每一个小国,他只能经过 次。
而且,对于贤明的君王修建的新城市,他也只能经过一次。
在这样的情况下,小 D 想要知道,在他的旅途中,能最多经过多少个不同的城市。
简化版题意(这个可以保留也可以删去):一个仙人掌,仙人掌的每个环是有向的,但是连接两个环的路是无向的,求从一个点到另一个点最多能经过多少点。输入数据中全都是有向边,而且保证连接两个环的无向边指向深度较浅的环。
输入格式
输入的第一行是两个正整数 ,。表示有 个城市, 条边。
输入的第二到第 行,每行两个正整数 ,。表示城市 到城市 有一条单向的路。
假如这条道路是连接两个小国的,那么这条道路是无向的。但是小D的地图上并没有标注出来(不过我们保证这些路都是从父亲指向儿子的),需要你来判断。
输入的第 行是一个整数 。表示小D有 次询问。
输入的第 行到第 行,每行是两个整数 ,。表示小 D 将从城市 到城市 。
输出格式
共 行,每行有一个正整数,表示小 D 能最多经过多少个城市。
7 7
1 2
1 7
2 3
3 4
4 5
5 2
5 6
5
1 2
2 5
1 6
6 7
1 7
5
4
6
7
2
样例解释
四个城市属于一个文明,因为在单向道路的情况下任意两个城市都互相可达,对于 三个城市,必须要建成双向的道路才能做到互相可达。因此城市 属于一个小国(小国是尽量大的),同时城市 是贤明的君王修建的城市。
在询问 中,小 D 希望从城市 到城市 ,他可以按照 的顺序走,最多可以到达 个城市。
按照 的顺序走是错误的,因为小 D 将会两次经过同一个小国。
按照 的顺序走也是错误的,因为小 D 将会两次经过城市 。
数据范围
对于 的数据,。
对于 的数据,。
对于另外 的数据,。
对于另外 的数据,满足所有小国的大小均为。
对于 的数据,。