Servermaster
20th November 2011, 02:23 AM
misi agan2 yg baik hati,
super duper newbie mau nanya lagi nih...
*tentang BFS. :(( hampir nyerahhh
gimana sih memperbaiki 2 error ini:
<div style="margin:20px; margin-top:5px">
Code:
#include
#include
#include
#include
#include
using namespace std;
const int INFINITY = 999999999;
enum Color { WHITE, GRAY, BLACK };
class Vertex
{
public:
Vertex();
Vertex(char id);
~Vertex();
char Vertex::getId() const;
void Vertex::setId(char arg);
bool operator color;
color[r] = WHITE;
color[s] = WHITE;
color[t] = WHITE;
color[u] = WHITE;
color[v] = WHITE;
color[w] = WHITE;
color[x] = WHITE;
color[y] = WHITE;
map< Vertex , int> distance;
distance[r] = INFINITY;
distance[s] = INFINITY;
distance[t] = INFINITY;
distance[u] = INFINITY;
distance[v] = INFINITY;
distance[w] = INFINITY;
distance[x] = INFINITY;
distance[y] = INFINITY;
map< Vertex , char> parent;
parent[r] = '0';
parent[s] = '0';
parent[t] = '0';
parent[u] = '0';
parent[v] = '0';
parent[w] = '0';
parent[x] = '0';
parent[y] = '0';
//create the adj lists
list adj_r;
list adj_s;
list adj_t;
list adj_u;
list adj_v;
list adj_w;
list adj_x;
list adj_y;
adj_r.push_back(s);
adj_r.push_back(v);
adj_s.push_back(r);
adj_s.push_back(w);
adj_t.push_back(w);
adj_t.push_back(x);
adj_t.push_back(u);
adj_u.push_back(t);
adj_u.push_back(x);
adj_u.push_back(y);
adj_v.push_back(r);
adj_w.push_back(s);
adj_w.push_back(t);
adj_w.push_back(x);
adj_x.push_back(w);
adj_x.push_back(t);
adj_x.push_back(y);
adj_x.push_back(u);
adj_y.push_back(x);
adj_y.push_back(u);
//map vertices to corresponding lists
map< Vertex , list > adj;
adj[r] = adj_r;
adj[s] = adj_s;
adj[t] = adj_t;
adj[u] = adj_u;
adj[v] = adj_v;
adj[w] = adj_w;
adj[x] = adj_x;
adj[y] = adj_y;
//other objects
queue q;
Vertex currentVertex;
Vertex currentDecescendant;
//start algorithm
color[s] = GRAY;
distance[s] = 0;
parent[s] = NULL;
q.push(s);
//in while loop
while( !q.empty() )
{
//dequeue
currentVertex = q.front();
q.pop();
//for each currentDecescendant in adj[currentVertex]
list::iterator it;
for (it = adj[currentVertex].begin(); it != adj[currentVertex].end(); it++)
{
currentDecescendant.setId(it->getId());
if (color[currentDecescendant]==WHITE)
{
color[currentDecescendant] = GRAY;
distance[currentDecescendant] = distance[currentVertex] + 1;
parent[currentDecescendant] = currentVertex.getId();
q.push(currentDecescendant);
}
}
color[currentVertex] = BLACK;
}
cout
super duper newbie mau nanya lagi nih...
*tentang BFS. :(( hampir nyerahhh
gimana sih memperbaiki 2 error ini:
<div style="margin:20px; margin-top:5px">
Code:
#include
#include
#include
#include
#include
using namespace std;
const int INFINITY = 999999999;
enum Color { WHITE, GRAY, BLACK };
class Vertex
{
public:
Vertex();
Vertex(char id);
~Vertex();
char Vertex::getId() const;
void Vertex::setId(char arg);
bool operator color;
color[r] = WHITE;
color[s] = WHITE;
color[t] = WHITE;
color[u] = WHITE;
color[v] = WHITE;
color[w] = WHITE;
color[x] = WHITE;
color[y] = WHITE;
map< Vertex , int> distance;
distance[r] = INFINITY;
distance[s] = INFINITY;
distance[t] = INFINITY;
distance[u] = INFINITY;
distance[v] = INFINITY;
distance[w] = INFINITY;
distance[x] = INFINITY;
distance[y] = INFINITY;
map< Vertex , char> parent;
parent[r] = '0';
parent[s] = '0';
parent[t] = '0';
parent[u] = '0';
parent[v] = '0';
parent[w] = '0';
parent[x] = '0';
parent[y] = '0';
//create the adj lists
list adj_r;
list adj_s;
list adj_t;
list adj_u;
list adj_v;
list adj_w;
list adj_x;
list adj_y;
adj_r.push_back(s);
adj_r.push_back(v);
adj_s.push_back(r);
adj_s.push_back(w);
adj_t.push_back(w);
adj_t.push_back(x);
adj_t.push_back(u);
adj_u.push_back(t);
adj_u.push_back(x);
adj_u.push_back(y);
adj_v.push_back(r);
adj_w.push_back(s);
adj_w.push_back(t);
adj_w.push_back(x);
adj_x.push_back(w);
adj_x.push_back(t);
adj_x.push_back(y);
adj_x.push_back(u);
adj_y.push_back(x);
adj_y.push_back(u);
//map vertices to corresponding lists
map< Vertex , list > adj;
adj[r] = adj_r;
adj[s] = adj_s;
adj[t] = adj_t;
adj[u] = adj_u;
adj[v] = adj_v;
adj[w] = adj_w;
adj[x] = adj_x;
adj[y] = adj_y;
//other objects
queue q;
Vertex currentVertex;
Vertex currentDecescendant;
//start algorithm
color[s] = GRAY;
distance[s] = 0;
parent[s] = NULL;
q.push(s);
//in while loop
while( !q.empty() )
{
//dequeue
currentVertex = q.front();
q.pop();
//for each currentDecescendant in adj[currentVertex]
list::iterator it;
for (it = adj[currentVertex].begin(); it != adj[currentVertex].end(); it++)
{
currentDecescendant.setId(it->getId());
if (color[currentDecescendant]==WHITE)
{
color[currentDecescendant] = GRAY;
distance[currentDecescendant] = distance[currentVertex] + 1;
parent[currentDecescendant] = currentVertex.getId();
q.push(currentDecescendant);
}
}
color[currentVertex] = BLACK;
}
cout