D:\Users\tomas\Documents\NetBeansProjects\PrikladGrafy\src\prikladgrafy\Graf.java
 1 /*
 2  * To change this license header, choose License Headers in Project Properties.
 3  * To change this template file, choose Tools | Templates
 4  * and open the template in the editor.
 5  */
 6 package prikladgrafy;
 7 
 8 import java.io.FileInputStream;
 9 import java.io.FileNotFoundException;
10 import java.util.Scanner;
11 
12 /**
13  *
14  * @author tomas
15  */
16 public class Graf 
17 {
18 
19     int n; // pocet vrcholov grafu
20     int m; // pocet hran grafu
21     int H[][]; // pole udajov o hranach
22 
23     public Graf(int paPocetVrcholov, int paPocetHran)
24     {
25         n = paPocetVrcholov;
26         m = paPocetHran;
27         H = new int[1 + m][3];
28     }
29     /* 
30     Nacitanie grafu zo suboru:
31     Na kazdom riadku su tri cisla, prve a druhe cislo su cisla vrcholov
32     a tretie cislo je ohodnotenie hrany.
33     Pocet vrcholov aj pocet hran sa urci automaticky. Pocet hran je rovny
34     poctu riadkov v subore a pocet vrcholov je rovny najvacsiemu cislu
35     vrcholu v udajoch o hranach.
36     */
37     public static Graf nacitajSubor(String nazovSuboru) 
38             throws FileNotFoundException
39     {
40         // otvorim subor a pripravim Scanner pre nacitavanie
41         Scanner s = new Scanner(new FileInputStream(nazovSuboru));
42         
43         // najskor len zistim pocet vrcholov a pocet hran
44         int pocetVrcholov = 1;
45         int pocetHran = 0;
46         // prejdem cely subor
47         while (s.hasNext())
48         {
49             // nacitam udaje o hrane
50             int u = s.nextInt();
51             int v = s.nextInt();
52             int c = s.nextInt();
53             
54             // nacital som hranu, zvysim ich pocet o 1
55             pocetHran++;
56             
57             // skontrolujem, ci netreba zvysit pocet vrcholov
58             if (pocetVrcholov < u) pocetVrcholov = u;
59             if (pocetVrcholov < v) pocetVrcholov = v;
60         }
61         // ukoncim nacitavanie zo suboru
62         s.close();
63         
64         // vytvorim objekt grafu s potrebnym poctom vrcholo v aj hran
65         Graf g = new Graf(pocetVrcholov,pocetHran);
66         
67         // po druhy krat otvorim ten isty subor,
68         // uz pozanm pocet vrcholov aj hran a mam alokovanu pamat
69         s = new Scanner(new FileInputStream(nazovSuboru));
70         
71         // postune nacitam vsetky hrany
72         // tentokrat si ich uz budem aj ukladat do pamate
73         for (int j = 1; j <= pocetHran; j++)
74         {
75             int u = s.nextInt();
76             int v = s.nextInt();
77             int c = s.nextInt();
78             
79             g.H[j][0] = u;
80             g.H[j][1] = v;
81             g.H[j][2] = c;
82         }
83         
84         return g;
85     }
86     
87     public void printInfo()
88     {
89         System.out.println("Pocet vrcholov: " + n);
90         System.out.println("Pocet hran: " + m);
91     }
92     
93 }
94