git reimport
This commit is contained in:
152
archive/2016.08/2016.08.03 - unsorted/Sazanka2J.java
Normal file
152
archive/2016.08/2016.08.03 - unsorted/Sazanka2J.java
Normal file
@@ -0,0 +1,152 @@
|
||||
package chelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import io.InputReader;
|
||||
import io.OutputWriter;
|
||||
|
||||
|
||||
public class Sazanka2J {
|
||||
|
||||
class Edge {
|
||||
|
||||
int a, b;
|
||||
|
||||
Edge(int a, int b) {
|
||||
this.a = a;
|
||||
this.b = b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (!(o instanceof Edge)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Edge edge = (Edge) o;
|
||||
|
||||
if (a != edge.a) {
|
||||
return false;
|
||||
}
|
||||
return b == edge.b;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = a;
|
||||
result = 31 * result + b;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<Integer>[] leftToRightEdges;
|
||||
boolean[][] graphToLeft;
|
||||
boolean[][] graphToRight;
|
||||
boolean[] usedLeft;
|
||||
boolean[] usedRight;
|
||||
int m, n;
|
||||
|
||||
void dfs(int x, boolean left) {
|
||||
// System.out.println("dfs run " + x + " " + left);
|
||||
if (left) {
|
||||
usedLeft[x] = true;
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (graphToRight[x][i] && !usedRight[i]) {
|
||||
dfs(i, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
usedRight[x] = true;
|
||||
for (int i = 0; i < m; i++) {
|
||||
if (graphToLeft[x][i] && !usedLeft[i]) {
|
||||
dfs(i, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void solve(int testNumber, InputReader in, OutputWriter out) {
|
||||
m = in.nextInt();
|
||||
n = in.nextInt();
|
||||
|
||||
leftToRightEdges = new ArrayList[m];
|
||||
for (int i = 0; i < m; i++) {
|
||||
leftToRightEdges[i] = new ArrayList<>();
|
||||
int k = in.nextInt();
|
||||
for (int j = 0; j < k; j++) {
|
||||
leftToRightEdges[i].add(in.nextInt() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
boolean[] nasucsh = new boolean[m];
|
||||
Set<Edge> parsoch = new HashSet<>();
|
||||
for (int i = 0; i < m; i++) {
|
||||
int x = in.nextInt();
|
||||
if (x > 0) {
|
||||
parsoch.add(new Edge(i, x - 1));
|
||||
nasucsh[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
graphToLeft = new boolean[n][m];
|
||||
graphToRight = new boolean[m][n];
|
||||
for (int i = 0; i < m; i++) {
|
||||
for (int j : leftToRightEdges[i]) {
|
||||
if (parsoch.contains(new Edge(i, j))) {
|
||||
graphToLeft[j][i] = true;
|
||||
// System.out.println("toleft " + j + " " + i);
|
||||
} else {
|
||||
graphToRight[i][j] = true;
|
||||
// System.out.println("toright " + i + " " + j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
usedLeft = new boolean[m];
|
||||
usedRight = new boolean[n];
|
||||
for (int i = 0; i < m; i++) {
|
||||
if (!nasucsh[i]) {
|
||||
// out.println("dfs " + i);
|
||||
dfs(i, true);
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<Integer> answerLeft = new ArrayList<>();
|
||||
ArrayList<Integer> answerRight = new ArrayList<>();
|
||||
|
||||
Collections.sort(answerLeft);
|
||||
Collections.sort(answerRight);
|
||||
|
||||
|
||||
for (int i = 0; i < m; i++) {
|
||||
if (!usedLeft[i]) {
|
||||
answerLeft.add(i);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (usedRight[i]) {
|
||||
answerRight.add(i);
|
||||
}
|
||||
}
|
||||
|
||||
out.println(answerLeft.size() + answerRight.size());
|
||||
|
||||
out.print(answerLeft.size() + " ");
|
||||
for (int i : answerLeft) {
|
||||
out.print(i + 1 + " ");
|
||||
}
|
||||
out.println();
|
||||
out.print(answerRight.size() + " ");
|
||||
for (int i : answerRight) {
|
||||
out.print(i + 1 + " ");
|
||||
}
|
||||
}
|
||||
}
|
31
archive/2016.08/2016.08.03 - unsorted/Sazanka2J.task
Normal file
31
archive/2016.08/2016.08.03 - unsorted/Sazanka2J.task
Normal file
@@ -0,0 +1,31 @@
|
||||
9 Sazanka2J
|
||||
6 SINGLE
|
||||
8 STANDARD
|
||||
9 input.txt
|
||||
8 STANDARD
|
||||
10 output.txt
|
||||
1
|
||||
0
|
||||
23 3 2
|
||||
2 1 2
|
||||
1 2
|
||||
1 2
|
||||
1 2 0
|
||||
9 2
|
||||
1 1
|
||||
1 2
|
||||
1
|
||||
11 src/chelper
|
||||
16 -Xmx256m -Xss64m
|
||||
4 Main
|
||||
17 chelper.Sazanka2J
|
||||
39 net.egork.chelper.checkers.TokenChecker
|
||||
0
|
||||
0
|
||||
10 2016.08.03
|
||||
0
|
||||
1
|
||||
14 io.InputReader
|
||||
15 io.OutputWriter
|
||||
0
|
||||
0
|
Reference in New Issue
Block a user