1 import java.util.Scanner;
2
10 public class RandomSurferV2 {
11 public static void main(String[] args) {
12
13 Scanner scanner = new Scanner(System.in);
14
15
16
17 Page[] pages = new Page[scanner.nextInt()];
19
20 System.out.println();
21 System.out.println("=============== web structure =======================");
22
23 for (int i=0; i<pages.length; i++) {
25
26 pages[i] = new Page(scanner.next(), scanner.nextInt());
28
29 }
30
31 for (int i=0; i<pages.length; i++) {
33 System.out.print((i+1) + ". " + pages[i].getURL() + " -> ");
34
35 for (int j=0; j<pages[i].getDegree(); j++) {
37
38 int k = scanner.nextInt();
40
41 pages[i].setLink( j, pages[k-1] );
44
45 System.out.print(pages[k-1].getURL() + " ");
46
47 }
48 System.out.println();
49 }
50 System.out.println("=====================================================");
51
52
53
54 System.out.println();
55 System.out.println("--------------- data structure ----------------------");
56
57 System.out.println("pages.length = " + pages.length);
58 for (int i=0; i<pages.length; i++) {
60
61 System.out.println();
62 System.out.println("pages[" + i + "] = <" + pages[i] + ">");
63 System.out.println("pages[" + i + "].url = \"" + pages[i].getURL() + "\"");
64
65 System.out.println("pages[" + i + "].links.length = " + pages[i].getDegree());
66 for (int j=0; j<pages[i].getDegree(); j++) {
67 Page p = pages[i].getLink(j);
68 System.out.println("pages[" + i + "].links["+ j + "] = <" + p + "> (\"" + p.getURL() + "\")");
69 }
70
71 System.out.println("pages[" + i + "].count = " + pages[i].getCount());
72 }
73
74 System.out.println();
75 System.out.println("-----------------------------------------------------");
76 System.out.println();
77
78
79
80 int totalVisits = scanner.nextInt();
82 Page currentPage = pages[0];
84 System.out.println("start page: "+currentPage.getURL());
85
86 int visitCount = 0; while ( visitCount++ < totalVisits ) {
88
89
91 System.out.println();
92 System.out.println("visit nr." + visitCount + ": " + currentPage.getURL());
93
94
97
98 if (Math.random() < 0.90) {
99
102 int k = (int)( Math.random() * currentPage.getDegree());
104
105 System.out.print("click link " + (k+1) + " (of " + currentPage.getDegree() + ") = ");
106
107 currentPage = currentPage.getLink(k);
109
110 }
111
112 else {
113
116 int k = (int)( Math.random() * pages.length );
118
119 System.out.print("type page address: ");
120
121 currentPage = pages[k];
123
124 }
125
126 System.out.println(currentPage.getURL());
127
128 currentPage.incrementCount();
130 }
131
132
133
134 System.out.println();
135 System.out.println("total visits: " + totalVisits);
136
137 for (int i=0; i<pages.length; i++)
139 System.out.println( "page " + pages[i].getURL() + ": " + pages[i].getCount()
140 + " visits (" + ( pages[i].getCount() / (totalVisits/100.0) ) + " %)");
141
142 }
143
144 }
145