#P14900. [OOI2016预选赛long]Дураки и дороги傻瓜与道路

    ID: 14116 传统题 2000ms 512MiB 尝试: 2 已通过: 1 难度: 7 上传者: 标签>CF2300图论数据结构并查集线段树分治可持久化

[OOI2016预选赛long]Дураки и дороги傻瓜与道路

题目描述

众所周知,贝尔兰德正好有两个问题,而道路就是其中之一。

根据学校地理课你应该知道,贝尔兰德正好有 nn 座城市和 mm 条双向道路。坦率地说,其中一些道路状况十分糟糕。

为了维护道路质量,政府宣布其中一些道路改为收费道路。每条收费道路由 kk 家公司中的一家维护,该公司负责及时修路(也负责收取过路费)。

贝尔兰德不仅有两个问题,还有两座首都。它们位于不同纬度,因此一座被称为北方首都,另一座被称为南方首都。关于哪座首都更重要的争论已经持续多年,但对公司而言,重要的不是谁更重要,而是这两座城市之间集中了主要的汽车交通流量。

贝尔兰德反垄断部门怀疑道路分配并不公平:可能存在一条从北方首都到南方首都的路径,使得某家公司在这条路径上没有任何一条道路。反垄断部门认为这会造成不健康的竞争,需要避免这样的情况;但首先必须找出所有遭受这种不公平的公司。这个艰巨任务被交给了你。

如果存在某条两首都之间的路径,其上没有任何道路由公司 xx 维护,则称公司 xx被亏待的。请输出所有被亏待公司的编号。

输入格式

第一行包含三个整数 n,m,kn,m,k2n,k1000002 \le n,k \le 1000001m1000001 \le m \le 100000),分别表示城市数、道路数和公司数。

接下来 mm 行描述道路。第 ii 行包含三个整数 ui,vi,ciu_i,v_i,c_i1ui,vin1 \le u_i,v_i \le n0cik0 \le c_i \le k),表示第 ii 条道路连接城市 uiu_iviv_i,并由编号为 cic_i 的公司维护。其中 ci=0c_i=0 表示该道路仍然免费,不属于任何公司。

最后一行包含两个整数 a,ba,b1a,bn1 \le a,b \le naba \ne b),表示北方首都和南方首都的城市编号。

保证没有道路连接一座城市自身,并且任意两座城市之间至多有一条道路。

输出格式

第一行输出被亏待公司的数量。

第二行按升序输出所有被亏待公司的编号。

样例

样例 1

4 5 2
1 2 1
1 3 2
2 4 2
3 4 1
2 3 0
1 4
2
1 2

样例 2

4 4 2
1 2 1
1 3 2
2 4 2
3 4 1
1 4
0

样例解释

在第一个样例中,存在路径 12341-2-3-4,其上只有第一家公司维护的道路(图中红色)和免费道路(黑色),没有第二家公司的道路;也存在路径 13241-3-2-4,其上只有第二家公司维护的道路(蓝色)和免费道路。

在第二个样例中,从城市 11 到城市 44 只有两条路径:1241-2-41341-3-4。两条路径上都包含两家公司的道路。

评分方式

测试由四组组成。只有通过某一组的所有测试以及所有前置测试组时,才能获得该组分数。Offline 检查表示该组的测试结果只会在比赛结束后公布。

组别 测试点 分数 附加限制 nn 附加限制 mm 附加限制 kk 说明
0 1–2 0 样例测试
1 3–32 30 n1000n \le 1000 m1000m \le 1000 k=2k=2
2 33–57 k1000k \le 1000
3 58–\infty 40 Offline 检查