Notice
Recent Posts
문제 풀이 및 개발 공간
[백준] 6328번 Erdos Numbers (gold 3 본문
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t=0;
while(true){
t++;
StringTokenizer st=new StringTokenizer(br.readLine());
int p=Integer.valueOf(st.nextToken());
int n=Integer.valueOf(st.nextToken());
if(p+n==0){
break;
}
HashMap<String, ArrayList<String>> dict=new HashMap<>();
HashMap<String, Integer> rel=new HashMap<>();
for(int i=0; i<p; i++){
String temp=br.readLine();
String[] a=temp.split(",|:"); //split에서 | 기호를 통해서 여러구분자 사용법 까먹지않기!
for(int j=0; j<a.length-1; j+=2){
temp=a[j].strip().concat(","+a[j+1]);
if(dict.get(temp)==null){
dict.put(temp,new ArrayList<>());
rel.put(temp,0);
}
for(int k=0; k<a.length-1; k+=2){
if(k!=j){
dict.get(temp).add(a[k].strip().concat(","+a[k+1]));
}
}
}
}
Queue<String> que=new LinkedList<>();
que.offer("Erdos, P.");
while(!que.isEmpty()){
String temp=que.poll();
ArrayList<String> arr=new ArrayList<>(dict.get(temp));
for(int i=0; i<arr.size(); i++){
if(!arr.get(i).equals("Erdos, P.") && rel.get(arr.get(i))==0){
rel.put(arr.get(i), rel.get(temp)+1);
que.offer(arr.get(i));
}
}
}
bw.write("Database #"+t+"\n");
for(int i=0; i<n; i++) {
String quiz = br.readLine();
if ((rel.get(quiz)==null || rel.get(quiz) == 0) && !quiz.equals("Erdos, P.")) {
bw.write(quiz + ": "+"infinity\n");
}
else {
bw.write(quiz + ": " + rel.get(quiz) + "\n");
}
}
bw.write("\n"); //테스트케이스 나누어지면서 분류 출력할때 꼭 쓰기//
}
bw.flush();
}
}
'백준공부 > java' 카테고리의 다른 글
[백준] 4422번 Crypt Kicker 2 (gold 4 (0) | 2023.09.22 |
---|---|
[백준] 2206번 벽 부수고 이동하기 (gold 3 (0) | 2023.09.21 |
[백준] 4428번 Contest Scoreboard (silver 3 (0) | 2023.09.17 |
[백준] 16928번 뱀과 사다리 게임 (gold 5 (0) | 2023.09.17 |
[백준] 7569번 토마토 (gold 5 (0) | 2023.09.17 |