Esempio n. 1
0
//#line 29 "../PROTOTYPES/ladders.ch"
void plant_new_edge(Vertex * v)
//#line 294 "../ladders.w"
{
    Vertex *u = gg->vertices + gg->n;

    gb_new_edge(u, v, 1L);
    if (alph)
        u->arcs->len = (u->arcs - 1)->len = alph_dist(u->name, v->name);
    else if (freq) {
        u->arcs->len = freq_cost(v);
        (u->arcs - 1)->len = 20;
    }
}
Esempio n. 2
0
int main() {
	mt19937 rng;
	
	uniform_int_distribution<int> length_dist(0, 100);
	uniform_int_distribution<int> alph_dist(1, 6);
	
	for(int t = 0; t < 400000; ++t) {
		int n = length_dist(rng);
		int k = alph_dist(rng);
		uniform_int_distribution<int> char_dist('A', 'A' + k - 1);
		
		vector<int> S;
		for(int i = 0; i < n; ++i) {
			S.push_back(char_dist(rng));
		}
		
		vector<int> a = zAlgorithm(S);
		vector<int> b = zAlgorithm(S);
		
		if(a.size() != b.size() || !equal(a.begin(), a.end(), b.begin())) fail();
	}
	
	return 0;
}
Esempio n. 3
0
//#line 43 "../PROTOTYPES/ladders.ch"
long alph_heur(Vertex * v)
//#line 341 "../ladders.w"
{
    return alph_dist(v->name, goal);
}