Solved.ac Class4
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int size = Integer.parseInt(br.readLine());
int[] data = new int[size + 1];
boolean[] isVisit = new boolean[size + 1];
isVisit[1] = true;
for (int i = 1; i < size + 1; i++) {
data[i] = i;
}
for (int i = 1; i < size; i++) {
String[] connectionInfo = br.readLine().split(" ");
int d1 = Integer.parseInt(connectionInfo[0]);
int d2 = Integer.parseInt(connectionInfo[1]);
if (isVisit[d1]) {
isVisit[d2] = true;
data[d2] = d1;
} else {
isVisit[d1] = true;
data[d1] = d2;
}
}
for (int i = 2; i < size + 1; i++) {
sb.append(data[i]).append("\n");
}
System.out.println(sb);
}
}
설마 맨 처음 1부터 알려주나라는 안일한 생각
역시 그럴리가
틀렸습니다
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int size = Integer.parseInt(br.readLine());
ArrayList<ArrayList<Integer>> tree = new ArrayList<>();
boolean[] isVisit = new boolean[size];
int[] temp = new int[size];
for (int i = 0; i < size; i++) {
tree.add(new ArrayList<>());
}
for (int i = 1; i < size; i++) {
String[] data = br.readLine().split(" ");
int data1 = Integer.parseInt(data[0]) - 1;
int data2 = Integer.parseInt(data[1]) - 1;
tree.get(data1).add(data2);
tree.get(data2).add(data1);
}
Queue<Integer> queue = new LinkedList<>();
queue.add(0);
isVisit[0] = true;
while (!queue.isEmpty()) {
int now = queue.remove();
ArrayList<Integer> visitNow = tree.get(now);
for (int i : visitNow) {
if (!isVisit[i]) {
isVisit[i] = true;
temp[i] = now;
queue.add(i);
}
}
}
for (int i = 1; i < size; i++) {
sb.append(temp[i] + 1).append("\n");
}
System.out.println(sb);
}
}
서로 그래프로 연결한다. 이후 1번부터 방문한다.
방문하지 않았으면 큐에다 넣고 돌리면서 부모를 설정해준다
성공
fun main() {
val sb = StringBuilder()
val size = readln().toInt()
val tree = ArrayList<ArrayList<Int>>()
val isVisit = BooleanArray(size)
val temp = IntArray(size)
for (i in 0..<size) {
tree.add(ArrayList())
}
for (i in 1..<size) {
val data = readln().split(" ")
val data1 = data[0].toInt() - 1
val data2 = data[1].toInt() - 1
tree[data1].add(data2)
tree[data2].add(data1)
}
val queue: Queue<Int> = LinkedList()
queue.add(0)
isVisit[0] = true
while (queue.isNotEmpty()) {
val now = queue.remove()
val visitNow = tree[now]
for (i in visitNow) {
if (!isVisit[i]) {
isVisit[i] = true
temp[i] = now
queue.add(i)
}
}
}
for (i in 1..<size) {
sb.append(temp[i] + 1).append("\n")
}
print(sb)
}