Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 570 program1  (Citit de 6766 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
chera_lary
De-al casei
***

Karma: -2
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« : Februarie 22, 2010, 15:20:48 »

Salut!
Program1 : http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=570
Cand 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!

Cod:
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!
« Ultima modificare: Februarie 25, 2010, 16:14:58 de către Andrei Grigorean » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines