// L?sningsforslag, inf110, uke 10a. // ----------------------------------------------------------------- // Metodene leser en fil med kantinformasjon og oppretter en // retpresentasjon av grafen. import inf101.*; // Lager en nabomatrise void lesinn1 { int fra, til, lengde; Inn innfil = new Inn(< filnavn >); int n = innfil.inInt(); int graf[][] = new int[n][n]; while (!innfil.lastItem()) { fra = innfil.inInt(); til = innfil.inInt(); lengde = innfil.inInt(); graf[fra][til] = lengde; } } // Lager en naboliste void lesinn2 { Inn innfil = new Inn(< filnavn >); int n = innfil.inInt(); int fra, til, lengde; Node[] nodeNr = new Node[n]; int[] antEf = new int[n]; // Teller antall utg?ende kanter fra hver node: while (!innfil.lastItem()) { fra = innfil.inInt(); til = innfil.inInt(); lengde = innfil.inInt(); antEf[fra]++; } // Oppretter alle nodene: for (fra = 0; fra < n; fra++) { nodeNr[fra] = new Node[antEf[fra]]; antEf[fra] = 0; // Skal brukes til opptelling } innfil.close(); innfil = new Inn(< filnavn >); innfil.inInt(); // M? lese forbi... // Setter p? plass kantene: while (!innfil.lastItem()) { fra = innfil.inInt(); til = innfil.inInt(); lengde = innfil.inInt(); nodeNr[fra].etterf[antEf[fra]] = nodeNr[til]; nodeNr[fra].lengde[antEf[fra]] = lengde; antEf[fra]++; // Brukes til ? indeksere de interne arrayene } }