結果

問題 No.92 逃走経路
ユーザー takeya_okino
提出日時 2017-06-17 11:57:41
言語 Java
(openjdk 23)
結果
AC  
実行時間 228 ms / 5,000 ms
コード長 1,502 bytes
コンパイル時間 2,376 ms
コンパイル使用メモリ 77,640 KB
実行使用メモリ 46,724 KB
最終ジャッジ日時 2024-10-01 09:30:09
合計ジャッジ時間 7,777 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 18
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int K = sc.nextInt();
int[] a = new int[M];
int[] b = new int[M];
int[] c = new int[M];
int[] d = new int[K];
for(int i = 0; i < M; i++) {
a[i] = sc.nextInt() - 1;
b[i] = sc.nextInt() - 1;
c[i] = sc.nextInt();
}
for(int i = 0; i < K; i++) {
d[i] = sc.nextInt();
}
// dp[i][j]d1di(i)j
int[][] dp = new int[K + 1][N];
for(int j = 0; j < N; j++) {
dp[0][j] = 1;
}
for(int i = 1; i < K + 1; i++) {
for(int k = 0; k < M; k++) {
if(c[k] == d[i - 1]) {
int towna = a[k];
int townb = b[k];
if(dp[i][towna] == 0) {
dp[i][towna] = dp[i - 1][townb];
}
if(dp[i][townb] == 0) {
dp[i][townb] = dp[i - 1][towna];
}
}
}
}
int ans = 0;
for(int j = 0; j < N; j++) {
ans += dp[K][j];
}
System.out.println(ans);
ArrayList<Integer> town = new ArrayList<Integer>();
for(int j = 0; j < N; j++) {
if(dp[K][j] == 1) town.add(j + 1);
}
for(int j = 0; j < town.size(); j++) {
System.out.print(town.get(j));
if(j < town.size() - 1) {
System.out.print(" ");
} else {
System.out.println();
}
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0