結果
問題 | No.92 逃走経路 |
ユーザー |
![]() |
提出日時 | 2015-08-17 23:46:00 |
言語 | Java (openjdk 23) |
結果 |
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 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
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();}}