#P5344. 【XR-1】逛森林

    ID: 4270 远端评测题 3000ms 500MiB 尝试: 37 已通过: 2 难度: 6 上传者: 标签>st表稀疏表倍增最短路最近公共祖先LCAO2优化

【XR-1】逛森林

题目背景

NaCly_Fish 和 PinkRabbit 是好朋友。

有一天她去森林里游玩,回去跟 PinkRabbit 说:“我发现好多棵会动的树耶!”

PinkRabbit 动了动一只兔耳朵:“这有什么好稀奇的,我用一只兔耳朵就能维护每棵树的形态。”

NaCly_Fish 不服:“不止这样,我还看到有一些传送门,能从一条树枝跳到另一条树枝上呢!”

PinkRabbit 动了动另一只兔耳朵:“这有什么好稀奇的,我用两只兔耳朵就能统计每个传送门的信息。”

于是 NaCly_Fish 很郁闷,她向你求助,请帮帮她吧。

什么?你不愿意帮?

那她就不给你这题的分了。

题目描述

给你 nn 个节点的森林,初始没有边。

mm 个操作,分为两种:

1 u1 v1 u2 v2 w1\ u_1\ v_1\ u_2\ v_2\ w:表示构建一个单向传送门,从 u1v1u_1 \rightarrow v_1 简单路径上的所有节点,可以花费 ww 的代价,到达 u2v2u_2 \rightarrow v_2 简单路径上的所有节点。若 u1u_1v1v_1u2u_2v2v_2 不连通(由 22 操作产生的边不连通),则忽略此次操作。

2 u v w2\ u\ v\ w:表示将 uuvv 节点间连一条花费为 ww 的无向边,若 uuvv 之间已连通(由 22 操作产生的边连通)则忽略此次操作。

经过这 mm 次操作后,请你求出从 ss 节点出发,到每个节点的最小花费。

输入格式

第一行三个正整数 n,m,sn, m, s,分别表示树的节点数、操作数、和起始节点。

接下来 mm 行,每行若干个正整数,表示一次操作。

输出格式

输出一行 nn 个整数,第 ii 个整数表示从 ss 节点出发,到 ii 节点的最小花费。特别地,若不能到达ii节点,则输出 -1

9 11 5
2 2 1 2
2 3 1 5
2 4 2 10
2 5 3 9
2 6 5 3
2 7 6 6
2 8 7 2
2 9 4 2
1 1 1 4 9 2
1 8 5 1 6 1
1 3 6 9 6 1
1 1 1 1 0 1 7 9 1

提示

【样例说明】

这是样例中给出的树(严格来讲,这棵树也是一条链):

有三个传送门,其中两个是这样的:

  • 11 号点可以花费 22 的代价到达 494 \rightarrow 9 简单路径上的所有节点(即 4,94, 9 号点)。
  • 858 \rightarrow 5 简单路径上的所有节点(即 8,7,6,58, 7, 6, 5 号点)可以花费 11 的代价到达 161 \rightarrow 6 简单路径上的所有节点(即 1,3,5,61, 3, 5, 6 号点)。

容易看出从 55 号节点出发,到达其它节点的最小花费分别为:1,1,1,1,0,1,7,9,11, 1, 1, 1, 0, 1, 7, 9, 1

【数据规模与约定】

对于第 1,21, 2 个测试点,1n1001 \le n \le 1001m3001 \le m \le 300

对于第 3,43, 4 个测试点,1n10001 \le n \le 10001m30001 \le m \le 3000

对于 100%100\% 的数据,1n500001\le n \le 500001m1061\le m \le 10^61u,vn1\le u,v \le n1w1001\le w \le 100

对于第 11 ~ 1010 个测试点,每个 55 分。

对于第 11,1211, 12 个测试点,每个 2525 分。