SHARE
TWEET

Untitled

paveeeee Dec 8th, 2019 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class Suunnat {
  2.  
  3.  
  4.  
  5.     int[] vari;
  6.  
  7.     ArrayList<Integer>[] verkko;
  8.  
  9.     ArrayList<Kaari> kaaret = new ArrayList<>();
  10.  
  11.     boolean voi = true;
  12.  
  13.  
  14.  
  15.     public Suunnat(int n) {
  16.  
  17.         vari = new int[n + 1];
  18.  
  19.         verkko = new ArrayList[n + 1];
  20.  
  21.         for (int i = 1; i <= n; i++) {
  22.  
  23.             verkko[i] = new ArrayList<>();
  24.  
  25.         }
  26.  
  27.     }
  28.  
  29.  
  30.  
  31.     public void lisaaKaari(int a, int b) {
  32.  
  33.         if (a == b) {
  34.  
  35.             voi = false;
  36.  
  37.         }
  38.  
  39.         if (!voi) {
  40.  
  41.             return;
  42.  
  43.         }
  44.  
  45.         if (verkko[b].contains(a)) {
  46.  
  47.             verkko[b].add(a);
  48.  
  49.             kaaret.add(new Kaari(b, a));
  50.  
  51.         } else {
  52.  
  53.             verkko[a].add(b);
  54.  
  55.             kaaret.add(new Kaari(a, b));
  56.  
  57.         }
  58.  
  59.     }
  60.  
  61.  
  62.  
  63.     public ArrayList<Kaari> muodosta() {
  64.  
  65.         if (!voi) {
  66.  
  67.             return null;
  68.  
  69.         }
  70.  
  71.         for (int i = 1; i < verkko.length; i++) {
  72.  
  73.             if (vari[i] == 0) {
  74.  
  75.                 haku(i);
  76.  
  77.             }
  78.  
  79.         }
  80.  
  81.  
  82.  
  83.         return kaaret;
  84.  
  85.     }
  86.  
  87.  
  88.  
  89.     void haku(int alku) {
  90.  
  91.         vari[alku] = 1;
  92.  
  93.         for (int naapuri : verkko[alku]) {
  94.  
  95.             if (vari[naapuri] == 1) {
  96.  
  97.                 //sykli
  98.  
  99.                 vaihda(alku, naapuri);
  100.  
  101.             } else if (vari[naapuri] == 0) {
  102.  
  103.                 haku(naapuri);
  104.  
  105.             }
  106.  
  107.         }
  108.  
  109.         vari[alku] = 2;
  110.  
  111.     }
  112.  
  113.  
  114.  
  115.     void vaihda(int a, int b) {
  116.  
  117.         for (int i = 0; i < kaaret.size(); i++) {
  118.  
  119.             if (kaaret.get(i).alku == a && kaaret.get(i).loppu == b) {
  120.  
  121.                 int apu = kaaret.get(i).alku;
  122.  
  123.                 kaaret.get(i).alku = kaaret.get(i).loppu;
  124.  
  125.                 kaaret.get(i).loppu = apu;
  126.  
  127.                 return;
  128.  
  129.             }
  130.  
  131.         }
  132.  
  133.     }
  134.  
  135.  
  136.  
  137. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top