Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Suunnat {
- int[] vari;
- ArrayList<Integer>[] verkko;
- ArrayList<Kaari> kaaret = new ArrayList<>();
- boolean voi = true;
- public Suunnat(int n) {
- vari = new int[n + 1];
- verkko = new ArrayList[n + 1];
- for (int i = 1; i <= n; i++) {
- verkko[i] = new ArrayList<>();
- }
- }
- public void lisaaKaari(int a, int b) {
- if (a == b) {
- voi = false;
- }
- if (!voi) {
- return;
- }
- if (verkko[b].contains(a)) {
- verkko[b].add(a);
- kaaret.add(new Kaari(b, a));
- } else {
- verkko[a].add(b);
- kaaret.add(new Kaari(a, b));
- }
- }
- public ArrayList<Kaari> muodosta() {
- if (!voi) {
- return null;
- }
- for (int i = 1; i < verkko.length; i++) {
- if (vari[i] == 0) {
- haku(i);
- }
- }
- return kaaret;
- }
- void haku(int alku) {
- vari[alku] = 1;
- for (int naapuri : verkko[alku]) {
- if (vari[naapuri] == 1) {
- //sykli
- vaihda(alku, naapuri);
- } else if (vari[naapuri] == 0) {
- haku(naapuri);
- }
- }
- vari[alku] = 2;
- }
- void vaihda(int a, int b) {
- for (int i = 0; i < kaaret.size(); i++) {
- if (kaaret.get(i).alku == a && kaaret.get(i).loppu == b) {
- int apu = kaaret.get(i).alku;
- kaaret.get(i).alku = kaaret.get(i).loppu;
- kaaret.get(i).loppu = apu;
- return;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement