■0144 Packet Transportation
BFSするだけ.
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;
public class Main{
Scanner sc=new Scanner(System.in);
int INF=1<<28;
double EPS=1e-9;
int n;
int start, goal, ttl;
LinkedList<Integer>[] graph;
@SuppressWarnings("unchecked")
void run(){
n=sc.nextInt();
graph=new LinkedList[n];
for(int j=0; j<n; j++){
int u=sc.nextInt()-1;// ルータ番号
int m=sc.nextInt();
graph[u]=new LinkedList<Integer>();
for(int i=0; i<m; i++){
int v=sc.nextInt()-1;
graph[u].add(v);
}
}
int p=sc.nextInt();
for(int i=0; i<p; i++){
start=sc.nextInt()-1;
goal=sc.nextInt()-1;
ttl=sc.nextInt();
solve();
}
}
void solve(){
LinkedList<Integer> que=new LinkedList<Integer>();
boolean[] visited=new boolean[n];
int[] d=new int[n];
Arrays.fill(d, INF);
que.offer(start);
d[start]=1;
visited[start]=true;
for(; !que.isEmpty();){
int u=que.poll();
for(int v : graph[u]){
if(!visited[v]){
que.offer(v);
d[v]=d[u]+1;
visited[v]=true;
}
}
}
if(d[goal]<=ttl){
println(""+d[goal]);
}else{
println("NA");
}
}
void debug(Object... os){
System.err.println(Arrays.deepToString(os));
}
void print(String s){
System.out.print(s);
}
void println(String s){
System.out.println(s);
}
public static void main(String[] args){
// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));
new Main().run();
}
}
0 件のコメント:
コメントを投稿