QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 256 MB مجموع النقاط: 100

#1209. 道路建设

الإحصائيات

IOI 国是一个由 $N$ 个城市组成的国家。这些城市编号为 $1, 2, \dots, N$。JOI 教授对 IOI 国道路网的建设过程产生了兴趣。

通过查阅 IOI 国的历史资料,JOI 教授了解到了以下情况:

  • IOI 国的城市自建国以来至今保持不变。建国初期,城市之间没有任何道路。
  • 在 IOI 国建国 $i$ 年后 ($1 \le i \le Q$),制定了关于城市 $A_i$ 和城市 $B_i$ 之间交通状况的改善计划。
  • 在制定的改善计划中,有些按计划执行了,而有些则被放弃,未予执行。
  • 资料中明确记录了哪些改善计划被执行了。
  • 所有被执行的改善计划均在 1 年内完成。

此外,从另一份文献中得知,关于城市 $A_i$ 和城市 $B_i$ 之间的交通状况改善计划内容如下:

  • 如果在制定改善计划时,无法通过已建成的道路从城市 $A_i$ 到达城市 $B_i$,则在城市 $A_i$ 和城市 $B_i$ 之间新建一条双向道路。新建的道路是未铺装的。
  • 如果在制定改善计划时,可以通过已建成的道路从城市 $A_i$ 到达城市 $B_i$,则在所有使用道路数量最少的路径中,将这些路径上包含的所有未铺装道路进行铺装。如果存在多条使用道路数量最少的路径,则对这些路径上的所有未铺装道路进行同样的铺装处理。已经铺装过的道路不会再次铺装。

为了进一步调查,JOI 教授决定针对每一个被放弃的改善计划,计算如果仅额外执行该项计划,在该计划中需要铺装多少条道路。

任务

给定 IOI 国的交通状况改善计划及其执行情况,请编写一个程序,针对每一个被放弃的改善计划,计算如果执行该计划,需要铺装多少条道路。

输入格式

从标准输入读取以下数据:

  • 第 1 行包含两个整数 $N, Q$,以空格分隔。这表示 IOI 国有 $N$ 个城市,JOI 教授关注建国后 $Q$ 年间的交通状况改善计划。
  • 接下来的 $Q$ 行中,第 $i$ 行 ($1 \le i \le Q$) 包含三个整数 $T_i, A_i, B_i$,以空格分隔。整数 $T_i$ 表示建国 $i$ 年后制定的改善计划的执行情况,$T_i = 1$ 表示该计划已执行,$T_i = 2$ 表示该计划未执行而被放弃。整数 $A_i, B_i$ 表示在建国 $i$ 年后制定了关于城市 $A_i$ 和城市 $B_i$ 之间交通状况的改善计划。

输出格式

输出到标准输出。对于每一个被放弃的改善计划,如果执行该计划,请在一行中输出需要铺装的道路数量。如果执行该计划会导致新建道路,则输出 -1。

数据范围

所有输入数据满足以下条件:

  • $2 \le N \le 100\,000$
  • $1 \le Q \le 300\,000$
  • $1 \le T_i \le 2$ ($1 \le i \le Q$)
  • $1 \le A_i \le N$ ($1 \le i \le Q$)
  • $1 \le B_i \le N$ ($1 \le i \le Q$)
  • $A_i \neq B_i$ ($1 \le i \le Q$)

子任务

子任务 1 [10 点]

满足以下条件: $N \le 1\,000$ $Q \le 3\,000$

子任务 2 [25 点]

  • 存在整数 $P$ ($1 \le P \le Q - 1$),满足 $T_i = 1$ ($1 \le i \le P$) 且 $T_i = 2$ ($P + 1 \le i \le Q$)。

子任务 3 [25 点]

  • 对于所有满足 $T_i = 1$ 的 $i$ ($1 \le i \le Q$),以下任一条件成立:
    • 在执行建国 $i$ 年后的改善计划之前,无法通过已建成的道路从城市 $A_i$ 到达城市 $B_i$。
    • 在执行建国 $i$ 年后的改善计划之前,可以通过已建成的道路中不超过 200 条道路从城市 $A_i$ 到达城市 $B_i$。

子任务 4 [25 点]

  • 满足 $T_i = 2$ 的 $i$ ($1 \le i \le Q$) 不超过 200 个。

子任务 5 [15 点]

  • 无附加限制。

样例

样例输入 1

3 7
1 1 2
2 2 1
2 2 3
1 2 1
2 1 2
1 2 3
2 1 3

样例输出 1

1
-1
0
1

样例输入 2

6 8
1 1 3
1 6 1
1 2 5
2 3 6
1 3 6
1 4 1
2 4 3
2 2 5

样例输出 2

2
1
1

样例输入 3

7 11
1 5 1
1 6 2
1 1 3
1 3 5
1 5 7
1 4 5
1 4 1
2 1 3
2 3 7
2 4 3
2 5 6

样例输出 3

0
1
0
-1

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.