Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- /**
- * Created by asd on 2017-11-21.
- */
- public class Klasa extends LGraph {
- private boolean[] odwiedzone;
- public Klasa(int vertexCount) {
- for (int i = 0; i < vertexCount; i++) {
- addVertex();
- }
- }
- @Override
- public void writeList() {
- for (int i = 0; i < listaSasiedztwa.size(); ++i) {
- System.out.println("Wierzcholek " + i + ": " + listaSasiedztwa.get(i).toString());
- }
- }
- @Override
- public void writeMatrix() {
- for (int i = 0; i < iloscWierzcholkow; ++i) {
- for (int j = 0; j < iloscWierzcholkow; ++j) {
- if (check(i, j)) {
- System.out.print("1 ");
- } else {
- System.out.print("0 ");
- }
- }
- System.out.println();
- }
- }
- @Override
- public int addVertex() {
- this.listaSasiedztwa.add(new ArrayList<>());
- return iloscWierzcholkow++;
- }
- @Override
- public void addEdge(int source, int target) throws IllegalArgumentException {
- List<Integer> l = listaSasiedztwa.get(source);
- if (!check(source, target)) {
- l.add(target);
- }
- }
- @Override
- public List<Integer> sasiedzi(int v) throws IllegalArgumentException {
- ArrayList<Integer> l = new ArrayList<>();
- l.addAll(listaSasiedztwa.get(v));
- for (int i = 0; i < iloscWierzcholkow; i++) {
- if (check(i, v) && !l.contains(i)) {
- l.add(i);
- }
- }
- return l;
- }
- @Override
- public boolean check(int i, int j) throws IllegalArgumentException {
- List<Integer> l = listaSasiedztwa.get(i);
- if (l.contains(j)) {
- return true;
- }
- return false;
- }
- @Override
- public void dfs() {
- Stack<Integer> stos = new Stack<>();
- boolean[] odwiedzone = new boolean[this.iloscWierzcholkow];
- stos.add(0);
- this.odwiedzaj(0);
- odwiedzone[0] = true;
- while (!stos.isEmpty()) {
- int v = stos.pop();
- for (int i = iloscWierzcholkow - 1; i >= 0; i--) {
- if (this.check(v, i) && !odwiedzone[i]) {
- odwiedzone[i] = true;
- stos.add(i);
- System.out.println(i);
- }
- }
- }
- }
- @Override
- protected void odwiedzaj(int wierzcholek) {
- System.out.println(wierzcholek);
- }
- @Override
- public LGraph transpose() {
- Klasa temp = new Klasa(this.iloscWierzcholkow);
- for (int i = 0; i < iloscWierzcholkow; i++) {
- for (int j = 0; j < iloscWierzcholkow; ++j) {
- if (check(i, j)) {
- temp.addEdge(j, i);
- }
- }
- }
- return temp;
- }
- public static void main(String[] args) {
- Klasa kl = new Klasa(11);
- kl.addEdge(0,1);
- kl.addEdge(1,2);
- kl.addEdge(1,3);
- kl.addEdge(2,5);
- kl.addEdge(2,4);
- kl.addEdge(3,6);
- // 0 2 3 1 4
- kl.writeMatrix();
- System.out.println();
- kl.writeList();
- System.out.println();
- kl.dfs();
- System.out.println();
- LGraph temp = kl.transpose();
- temp.writeMatrix();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement