1
1
import 'dart:io' ;
2
- import 'dart:math' as Math ;
2
+ import 'dart:math' as math ;
3
3
4
4
class Route {
5
5
final int dest, cost;
6
-
7
6
Route (this .dest, this .cost);
8
7
9
8
String toString () => "$dest $cost \n " ;
10
9
}
11
10
12
- class Node {
13
- final List <Route > neighbours = new List <Route >();
14
-
15
- Node ();
11
+ class Node {
12
+ final neighbours = < Route > [];
16
13
}
17
14
18
15
void readPlacesAndFindPath () {
19
- List < String > lines = new File ('agraph' ).readAsLinesSync ();
20
- int numNodes = int .parse (lines[0 ]);
21
- List nodes = new List < Node > .generate (numNodes, (int index ) => new Node ());
16
+ var lines = new File ('agraph' ).readAsLinesSync ();
17
+ var numNodes = int .parse (lines[0 ]);
18
+ var nodes = new List .generate (numNodes, (_ ) => new Node ());
22
19
23
- for ( int i = 1 ; i < lines.length; i++ ){
24
- List nums = lines[i].split (' ' );
25
- int node = int .parse (nums[0 ]);
26
- int neighbour = int .parse (nums[1 ]);
27
- int cost = int .parse (nums[2 ]);
20
+ for ( var i = 1 ; i < lines.length; i++ ) {
21
+ var nums = lines[i].split (' ' );
22
+ var node = int .parse (nums[0 ]);
23
+ var neighbour = int .parse (nums[1 ]);
24
+ var cost = int .parse (nums[2 ]);
28
25
29
- nodes[node].neighbours.add (new Route (neighbour,cost));
26
+ nodes[node].neighbours.add (new Route (neighbour, cost));
30
27
}
31
28
32
29
var visited = new List <bool >.generate (numNodes, (int index) => false );
33
30
var start = new DateTime .now ();
34
- int len = getLongestPath (nodes, 0 , visited);
31
+ var len = getLongestPath (nodes, 0 , visited);
35
32
var duration = new DateTime .now ().difference (start);
36
33
37
34
print ("$len LANGUAGE Dart ${duration .inMilliseconds }" );
38
35
}
39
36
40
- int getLongestPath (List <Node > nodes, int nodeID, List <bool > visited){
37
+ int getLongestPath (List <Node > nodes, int nodeID, List <bool > visited) {
41
38
visited[nodeID] = true ;
42
- int max = 0 ;
43
- final List <Route > neighbors = nodes[nodeID].neighbours;
44
- for (var i = 0 , llen = neighbors.length; i < llen; i++ ) {
45
- final Route neighbor = neighbors[i];
46
- final int dest = neighbor.dest;
39
+ var max = 0 ;
40
+ var neighbors = nodes[nodeID].neighbours;
41
+ var neighborsLength = neighbors.length;
42
+ for (var i = 0 ; i < neighborsLength; i++ ) {
43
+ var neighbor = neighbors[i];
44
+ var dest = neighbor.dest;
47
45
if (! visited[dest]) {
48
- final int dist = neighbor.cost +
49
- getLongestPath (nodes, dest, visited);
50
- max = Math .max (dist, max);
46
+ var dist = neighbor.cost + getLongestPath (nodes, dest, visited);
47
+ max = math.max (dist, max);
51
48
}
52
49
}
53
50
@@ -59,4 +56,3 @@ int getLongestPath(List<Node> nodes, int nodeID, List<bool> visited){
59
56
void main () {
60
57
readPlacesAndFindPath ();
61
58
}
62
-
0 commit comments