Salut!
Program1 :
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=570Cand verific programul pe .Campion nu obtin decat 40p, iar cand downloadez testele pe care le considera eronate si le verific pe calculator obtin rezultatul corect!
list<int> C; // coada
list<int> L[nMax]; // lista de adiacenta
int s[nMax]; // s[i] = 1 , nodul i vizitat si 0 daca nodul i nu este vizitat
int lnc=0; //linia curenta
void citeste()
{
fstream in(fin, ios::in);
char instr[21];
while(in.getline(instr, nMax, '\n'))
{
if(instr[0] != '.')
{
lnc++;
int k=0; // nr de cuv din instructiune, instrctiunea se incadreaza in tipul instructiunii cu k cuvinte
char cmd[4][6];
char *p=strtok(instr, " ");
while(p)
{
strcpy(cmd[++k], p);
p=strtok(NULL, " ");
}
switch(k)
{
case 1:
L[lnc].push_back(lnc+1);
break;
case 2:
L[lnc].push_back(atoi(cmd[2]));
break;
case 4:
L[lnc].push_back(atoi(cmd[2]));
L[lnc].push_back(atoi(cmd[4]));
break;
}
}
}
in.close();
}
void bfs(int nod)
{
s[nod] = 1;
C.push_back(nod);
while(C.size())
{
list<int>::iterator it;
for(it=L[*C.begin()].begin();it!=L[*C.begin()].end();it++)
{
if(!s[*it])
{
s[*it] = 1;
C.push_back(*it);
}
}
C.pop_front();
}
}
Construiesc un graf si apoi il parcurg cu BF. La sfarsit verific cate noduri au ramas nevizitate si afisez rezultatul!