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)
|
|
|
|
| | | | 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. | | | | |
| |
|