]> ruin.nu Git - icfp05.git/commitdiff
shortest path optimized
authorMichael Andreen <harv@ruin.nu>
Tue, 28 Jun 2005 15:44:21 +0000 (15:44 +0000)
committerMichael Andreen <harv@ruin.nu>
Tue, 28 Jun 2005 15:44:21 +0000 (15:44 +0000)
botsrc/bot.cpp
robbersrc/robbersrc.pro

index 7635f13c7894342ad6a60ba85bbb7a2c7ce7e5e7..e9950a6ac3e810f33c90b2bda3606c4668fd5ecd 100644 (file)
@@ -248,12 +248,11 @@ std::list<std::string> Bot::shortestPath(const std::string& from, PlayerType typ
 
        int g = 0;
        bool hascar = type == cop_car;
+       ;
+       SPInfo* n = 0;
        while(!pq.empty()){
                node = pq.top();
                pq.pop();
-               //cerr << "Vector with size: " << w.size() << endl;
-               //cerr << "Looking at: " << node->name << endl;
-               //copy(w.begin(), w.end(), ostream_iterator<string>(cerr, " : "));
 
                g = goal(node);
                if (g < 0)
@@ -269,19 +268,24 @@ std::list<std::string> Bot::shortestPath(const std::string& from, PlayerType typ
                }
                node->settled = true;
 
-               Intersection& inter = _intersections[node->name];
-               for (hash_map<string,StreetType>::const_iterator street = inter.connections.begin();
-                               street != inter.connections.end(); ++street){
+               hash_map<string,Intersection>::const_iterator intersection = _intersections.find(node->name);
+               if (intersection == _intersections.end()){ //Sanity check, should never be true..
+                       cerr << "BUG: Could not find intersection: " << node->name << endl;
+                       continue;
+               }
+               for (hash_map<string,StreetType>::const_iterator street = intersection->second.connections.begin();
+                               street != intersection->second.connections.end(); ++street){
                        hash_map<string,SPInfo>::iterator newNode = nodes.find(street->first);
                        bool travelStreet = false;
                        if (hascar){
                                if (reverse){
                                        if (street->second != foot){
-                                               hash_map<string,StreetType>::const_iterator st = _intersections[street->first].connections.find(node->name);
-                                               if (st != _intersections[street->first].connections.end())
-                                                       travelStreet = st->second != foot;
-                                               else
-                                                       travelStreet = false;
+                                               hash_map<string,Intersection>::const_iterator newInter = _intersections.find(street->first);
+                                               if (newInter != _intersections.end()){
+                                                       hash_map<string,StreetType>::const_iterator st = newInter->second.connections.find(node->name);
+                                                       if (st != newInter->second.connections.end())
+                                                               travelStreet = st->second != foot;
+                                               }
                                        }else
                                                travelStreet = true;
                                }else
@@ -291,7 +295,6 @@ std::list<std::string> Bot::shortestPath(const std::string& from, PlayerType typ
                        }
                        if (travelStreet){
                                //cerr << "Adding street: " << street->first << endl;
-                               SPInfo* n = 0;
                                if (newNode == nodes.end()){
                                        n = &nodes[street->first];
                                        n->name = street->first;
index 525f42b4894edd88893c7f52b7e2be644912ed36..1e0d738927faf50494e869de90ad3d3d10027201 100644 (file)
@@ -8,7 +8,7 @@ CONFIG -= qt
 #CONFIG += debug
 unix:LIBS += -lm
 TARGET = ../robber
-QMAKE_CFLAGS_RELEASE += -march=athlon-xp
+#QMAKE_CXXFLAGS_RELEASE += -march=athlon-xp -g
 
 
 # Input