結果
問題 | No.92 逃走経路 |
ユーザー |
![]() |
提出日時 | 2015-06-24 16:14:07 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 220 ms / 5,000 ms |
コード長 | 1,400 bytes |
コンパイル時間 | 1,870 ms |
コンパイル使用メモリ | 79,324 KB |
実行使用メモリ | 58,364 KB |
最終ジャッジ日時 | 2024-07-07 17:25:58 |
合計ジャッジ時間 | 6,385 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
import java.util.ArrayList;import java.util.HashSet;import java.util.Scanner;import java.util.TreeSet;public class Main {static int N, M, K;static int[] A, B, C;static int[] D;public static int solve(){int[][] dp = new int[K+1][N+1];for (int i = 0; i < K+1; i++) {for (int j = 0; j < N+1; j++) {dp[i][j] = 0;}}for (int i = 0; i < M; i++) {if(C[i] == D[1]) dp[1][A[i]] = dp[1][B[i]] = 1;}for (int k = 2; k <= K; k++) {for (int i = 0; i < M; i++) {if(C[i] == D[k]){if(dp[k-1][A[i]] == 1) dp[k][B[i]] = 1;if(dp[k-1][B[i]] == 1) dp[k][A[i]] = 1;}}}TreeSet<Integer> ret = new TreeSet<Integer>();for (int i = 1; i <= N; i++) {if(dp[K][i] == 1) ret.add(new Integer(i));}System.out.println(ret.size());int count = 0;for (Integer i : ret) {System.out.print(i);count++;if(count != ret.size()) System.out.print(" ");}System.out.print("\n");return 0;}public static void main(String[] args){Scanner S = new Scanner(System.in);N = S.nextInt();M = S.nextInt();K = S.nextInt();A = new int[M];B = new int[M];C = new int[M];for (int i = 0; i < M; i++) {A[i] = S.nextInt();B[i] = S.nextInt();C[i] = S.nextInt();}D = new int[K+1];for (int i = 1; i < K+1; i++) {D[i] = S.nextInt();}solve();}}