Am scris o sursa pentru problema Gmin max si se intampla ceva ciudat cu bucata urmatoare de cod
for(it=G[bex].begin();it!=G[bex].end();it++)//pentru toti vecinii lui bex
{vector<int>::iterator it1;
for(it1=G[*it].begin();it1!=G[*it].end();it1++) // cauta-l pe bex intre vecinii lui *it ca sa-l
{
if(*it1==bex) //stergi si sa micsorezi gradul lui *it si sa updatezi heapul :-'
{
G[*it].erase(it1);
g[*it]--;
upheap(poz[*it]);
}
}
}
si am observat ca programul pur si simplu nu se oprea la G[*it].end(); si cicla pana cand probabil it ajungea intr-un spatiu de memorie nealocata.
apoi am inlocuit cu
for(it=G[bex].begin();it!=G[bex].end();it++)
{vector<int>::iterator it1;
for(it1=G[*it].begin();it1-G[*it].begin()+1<=g[*it];it1++)
{
if(*it1==bex)
{
G[*it].erase(it1);
g[*it]--;
upheap(poz[*it]);
}
}
}
unde g[ i ] repezinta numarul de vecini ai nodului i si am luat 100.
Are cineva idee ce s-a intamplat?