結果

問題 No.92 逃走経路
ユーザー holegumaholeguma
提出日時 2015-08-17 23:46:00
言語 Java21
(openjdk 21)
結果
AC  
実行時間 145 ms / 5,000 ms
コード長 1,507 bytes
コンパイル時間 2,006 ms
コンパイル使用メモリ 79,880 KB
実行使用メモリ 54,432 KB
最終ジャッジ日時 2024-07-18 10:05:41
合計ジャッジ時間 4,950 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 129 ms
53,652 KB
testcase_01 AC 46 ms
50,156 KB
testcase_02 AC 60 ms
51,000 KB
testcase_03 AC 71 ms
50,936 KB
testcase_04 AC 58 ms
50,920 KB
testcase_05 AC 138 ms
53,812 KB
testcase_06 AC 99 ms
52,192 KB
testcase_07 AC 99 ms
51,548 KB
testcase_08 AC 70 ms
50,872 KB
testcase_09 AC 95 ms
51,484 KB
testcase_10 AC 141 ms
53,752 KB
testcase_11 AC 145 ms
54,432 KB
testcase_12 AC 139 ms
54,212 KB
testcase_13 AC 91 ms
51,744 KB
testcase_14 AC 94 ms
51,460 KB
testcase_15 AC 101 ms
52,512 KB
testcase_16 AC 109 ms
52,408 KB
testcase_17 AC 132 ms
53,652 KB
testcase_18 AC 125 ms
53,076 KB
testcase_19 AC 116 ms
53,140 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;

class Main{

static final PrintWriter out=new PrintWriter(System.out);

public static class Edge{
int from;
int to;
public Edge(int from,int to){
this.from=from; this.to=to;
}
}

public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String[] values=br.readLine().split(" ");
int n=Integer.parseInt(values[0]);
int m=Integer.parseInt(values[1]);
int k=Integer.parseInt(values[2]);
ArrayList<Edge> array;
boolean[][] pos=new boolean[k][n+1];
int[] place=new int[n];
HashMap<Integer,ArrayList<Edge>> map=new HashMap<Integer,ArrayList<Edge>>();
for(int i=0;i<m;i++){
values=br.readLine().split(" ");
int a=Integer.parseInt(values[0]);
int b=Integer.parseInt(values[1]);
int c=Integer.parseInt(values[2]);
if(!map.containsKey(c)) array=new ArrayList<Edge>();
else array=map.get(c);
array.add(new Edge(a,b));
array.add(new Edge(b,a));
map.put(c,array);
}
StringTokenizer  st=new StringTokenizer(br.readLine());
for(int i=0;i<k;i++){
int d=Integer.parseInt(st.nextToken());
array=map.get(d);
for(int j=0;j<array.size();j++){
Edge e=array.get(j);
if(i==0) pos[0][e.to]=true;
else{
if(pos[i-1][e.from]) pos[i][e.to]=true;
}
}
}
int cnt=0;
for(int i=1;i<=n;i++){
if(pos[k-1][i]){
cnt++;
place[cnt-1]=i;
}
}
out.println(cnt);
for(int i=0;i<cnt;i++){
if(i==cnt-1) out.println(place[i]);
else out.print(place[i]+" ");
}
out.flush();
}
}
0