equal
deleted
inserted
replaced
|
1 #ifndef LOADER_H |
|
2 #define LOADER_H |
|
3 |
|
4 #include <map> |
|
5 |
|
6 #define LINE_LEN 1024 |
|
7 |
|
8 template<typename Graph> |
|
9 void LoadGraph(Graph &G, char *filename) { |
|
10 FILE *file; |
|
11 if ((file = fopen(filename, "r")) == NULL) { |
|
12 printf("Could not open %s\n", filename); |
|
13 return; |
|
14 } |
|
15 int i, n1, n2; |
|
16 std::map<int, typename Graph::NodeIt> nmap; |
|
17 char line[LINE_LEN]; |
|
18 while (fgets(line, LINE_LEN, file)) { |
|
19 switch (line[0]) { |
|
20 case 'n': |
|
21 nmap[atoi(line + 1)] = G.addNode(); |
|
22 break; |
|
23 case 'a': |
|
24 n1 = atoi(line + 1); |
|
25 i = 1; |
|
26 while (isspace(line[i])) i++; |
|
27 while (isdigit(line[i])) i++; |
|
28 n2 = atoi(line + i); |
|
29 if (nmap.find(n1) == nmap.end()) { |
|
30 nmap[n1] = G.addNode(); |
|
31 } |
|
32 if (nmap.find(n2) == nmap.end()) { |
|
33 nmap[n2] = G.addNode(); |
|
34 } |
|
35 G.addEdge(nmap[n1], nmap[n2]); |
|
36 break; |
|
37 } |
|
38 } |
|
39 } |
|
40 |
|
41 #endif |