Meniu Principal
bullet  Pagina principala
bullet  Adauga o problema
bullet  Trimite-mi un mesaj
bullet  Cautare
bullet  Top probleme
bullet  Link
bullet  Statistici
bullet  Chestionare

Domenii probleme
bullet   Algoritmi
bullet   Arbori si Arborescente
bullet   Backtracking
bullet   Diverse
bullet   Grafuri
bullet   Greedy
bullet   Liste
bullet   Pointeri
bullet   Programare dinamica
bullet   Recursivitate
bullet   Structuri de date

Cautare in site




Statistici
38 probleme pe site

Incepand cu : 15.02.2004
Accesari : 172216

[ Statistici detaliate ]

Luna aglomerata :
noiembrie 2023 (4734)

Zi aglomerata :
11 noiembrie 2021 (2711)

Ora aglomerata :
15:00 - 15:59 in data de 16 august 2022 (2539)

 
 Id problema : 14

Adaugata de : Naum Bogdan
Domeniu : Grafuri
Accesari : 743

Adauga un comantariu - Propune o modificare - Adauga o problema
 

 Enunt :

Mai multe orase sunt legate prin autostrazi cu sens unic. Nu Toate orasele sunt legate intre ele prin legatura directa. Fiind dat orasul in care se afla un turist cu masina sa, se cer sa se urmatoarele:
a) lista orselor unde turistul poate ajunge
b) lista oraselor unde turistul poate ajunge, dar si intoarce

Datele se citesc dintr-un fisier, organizat astfel:
-Pe prima linie numarul oraselor, n , si orasul in care se afla, k
- pe fiecare linie i, din urmatoarele linii, se gasesc orasele la care se poate ajunge printr-o autostrada care nu mai trece prin alt oras.
 

 Rezolvare :

#include<fstream.h>

int graf[100][100],n,nod; //graf
int drum[100][100],viz[100]; //drum

void citire()
{
fstream f("graf.txt", ios::in);
f>>n>>nod;
int i,j;
while (f>>i>>j) graf[i][j]=1;
f.close();
}

void undepoateajunge(int nod)
{
cout<<nod<<" ";
viz[nod]=1;
for (int i=1;i<=n;i++) if ((graf[nod][i]==1) && (viz[i]==0)) undepoateajunge(i);
}

void matdr(int i,int j)
{
if (i!=j) drum[i][j]=1;
viz[j]=1;
for(int k=1;k<=n;k++) if ((graf[j][k]==1) && (viz[k]==0)) matdr(i,k);
}

void undepoateajungesiintoarce(int nodc)
{
int i;
if ((drum[nodc][nod]==1) && (nod!=nodc)) cout<<nodc<<" ";
viz[nodc]=1;
for (i=1;i<=n;i++) if ((graf[nodc][i]==1) && (viz[i]==0)) undepoateajungesiintoarce(i);
}


void main()
{
citire();
cout<<"\n\n\n---------- Unde poate ajunge ---------------"<<endl<<endl;
undepoateajunge(nod);
int i;
for (i=1;i<=n;i++)
{
for (int j=1;j<=n;j++) viz[j]=0;
matdr(i,i);
}
for (i=1;i<=n;i++) viz[i]=0;
cout<<"\n\n\n---------- Unde poate ajunge si se poate intoarce ---------------"<<endl<<endl;
undepoateajungesiintoarce(nod);
cout<<"\n\n\n\n";
}
 


 Opinii diverse :

Nu exista nici o opinie in baza de date.
 

 Optiuni :

Adauga un comantariu - Propune o modificare - Adauga o problema
 
 
Chestionar
Ce ai vrea mai nou la acest site ?

mai multe probleme
alta grafica
posibilitare creare cont
probleme propuse pentru rezolvare
un forum



Rezultate
Alte chestionare

Voturi: 48

TOP probleme accesate
verificati daca 2 cuvinte sunt anagrame recursiv test dass & ssss
Domeniu : Recursivitate
Adaugat de : Naum Bogdan
Hits : 6603
calculati minimul dintr-un vector recursiv
Domeniu : Recursivitate
Adaugat de : Naum Bogdan
Hits : 3881
La o statie meteo se alcatuieste zilnic un buletin meteo ce contine : nume metereolog - peresiune
Domeniu : Structuri de date
Adaugat de : Naum Bogdan
Hits : 1710

 
Copyright © 2004 - Naum Bogdan [ toate drepurile rezervate ]