git reimport
This commit is contained in:
73
archive/2017.09/2017.09.18 - unsorted/A.java
Normal file
73
archive/2017.09/2017.09.18 - unsorted/A.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package chelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.InputReader;
|
||||
import io.OutputWriter;
|
||||
import misc.SimpleSavingChelperSolution;
|
||||
|
||||
|
||||
public class A extends SimpleSavingChelperSolution {
|
||||
|
||||
public void solve(int testNumber, InputReader in, OutputWriter out) {
|
||||
wrapSolve(testNumber, in, out);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void solve(int testNumber) {
|
||||
int n = in.nextInt();
|
||||
|
||||
int[] l = new int[n];
|
||||
int[] r = new int[n];
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
l[i] = in.nextInt() - 1;
|
||||
r[i] = in.nextInt() - 1;
|
||||
}
|
||||
|
||||
boolean[] visited = new boolean[n];
|
||||
|
||||
List<int[]> things = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (visited[i]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int[] t = dfs(i, n, l, r, visited);
|
||||
things.add(t);
|
||||
}
|
||||
|
||||
for (int i = 0; i < things.size() - 1; i++) {
|
||||
int[] t1 = things.get(i);
|
||||
int[] t2 = things.get(i + 1);
|
||||
|
||||
r[t1[1]] = t2[0];
|
||||
l[t2[0]] = t1[1];
|
||||
}
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
out.println((l[i] + 1) + " " + (r[i] + 1));
|
||||
}
|
||||
}
|
||||
|
||||
int[] dfs(int v, int n, int[] l, int[] r, boolean[] visited) {
|
||||
visited[v] = true;
|
||||
|
||||
int leftmost = v;
|
||||
int rightmost = v;
|
||||
|
||||
if (l[v] != -1 && !visited[l[v]]) {
|
||||
int[] t = dfs(l[v], n, l, r, visited);
|
||||
leftmost = t[0];
|
||||
}
|
||||
|
||||
if (r[v] != -1 && !visited[r[v]]) {
|
||||
int[] t = dfs(r[v], n, l, r, visited);
|
||||
rightmost = t[1];
|
||||
}
|
||||
|
||||
return new int[]{leftmost, rightmost};
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user