結果
問題 | 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(); } }