P0650

[Usaco2005 Mar]Checking an Alibi 不在场的证明

[Usaco2005 Mar]Checking an Alibi 不在场的证明

谷仓中的谷物被盗了。农场主约翰试图从他的 CC 头奶牛中找出偷走谷物的奶牛。幸运的是,一颗恰好经过的卫星在案发前 MM 秒拍摄了农场的照片,记录了当时每头奶牛所在的位置。约翰希望判断哪些奶牛有足够的时间赶到谷仓实施盗窃。

约翰的农场由 FF 块田地组成,编号为 11 到 FF。田地之间由 PP 条双向道路连接,每条道路都有对应的通行时间。谷仓位于田地 11 中,奶牛在同一块田地内移动或切换道路不需要时间。

给定农场的道路布局以及卫星拍摄时每头奶牛所在的田地,请找出所有可能在案发前赶到谷仓的奶牛。

注意:在提交的程序中,请勿将变量准确命名为 time,否则可能与系统调用发生冲突。

输入格式

第一行包含四个以空格分隔的整数 FF、PP、CC 和 MM,分别表示田地数量、道路数量、奶牛数量以及卫星拍摄时间距离案发的秒数。

接下来 PP 行,每行包含三个以空格分隔的整数 F1F_1、F2F_2 和 TT,表示田地 F1F_1 与田地 F2F_2 之间有一条双向道路,通过该道路需要 TT 秒。

接下来 CC 行,每行包含一个整数。第 ii 行给出奶牛 ii 在卫星拍摄时所在田地的编号。

输出格式

第一行输出一个整数 NN,表示可能实施盗窃的奶牛数量。

接下来 NN 行,每行输出一头可能实施盗窃的奶牛编号。所有编号必须按升序输出。

样例输入

7 6 5 8
1 4 2
1 2 1
2 3 6
3 5 5
5 4 6
1 7 9
1
4
5
3
7

样例输出

4
1
2
3
4

数据范围

  • 1≤C≤1001\le C\le 100;
  • 1≤M≤7×1041\le M\le 7\times 10^4;
  • 1≤F≤5001\le F\le 500;
  • 1≤P≤1031\le P\le 10^3;
  • 每条道路的通行时间满足 1≤T≤7×1041\le T\le 7\times 10^4 秒。

来源与许可

本题为 USACO 2005 年 3 月试题「Checking an Alibi」,题面与测试数据整理自 BZOJ 1681。

样例 1

输入

7 6 5 8
1 4 2
1 2 1
2 3 6
3 5 5
5 4 6
1 7 9
1
4
5
3
7

输出

4
1
2
3
4