Grafuri neorientate – Aplicatii

Anuncio
GN_2_Lant_Ciclu_Aplicatii_0
prof. Craina S
Lant in GN
1) graf.cpp – citire_ma_f, afis_ma
//citire/afisare ma din fis
#include<iostream>
#include<fstream>
using namespace std;
int i,j,k,n,m,a[20][20],x,y;
void citire_ma_f()
{ifstream f("graf.txt");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
f.close();
}
void afisare_ma()
{int i,j;
cout<<"\n Matricea de adiacenta:"<<endl;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++) cout<<a[i][j]<<" ";
cout<<endl;
}
}
1
2
4
5
3
{Lant in graf –sa se verif dc o secventa de vf
reprez un lant elem sau ne-elem intr-un GN, nr de
vf si matricea de adiacenta se citesc de la tastatura,
iar secventa testata se gas in fis “lant.txt” (vf-le sunt
scrise in fis pe un singur rand, separate prin spatii}
#include<iostream>
#include<fstream>
#include "graf.cpp"
using namespace std;
int ok,z[50];
void verif_lant()
{ ifstream f("lant1.txt");
while(!f.eof())
{ do
{k++; f>>z[k];}
while(z[k]<1 || z[k]>n);
}
f.close();
cout<<"\n Secventa de varfuri este:\n";
for(i=1;i<=k;i++) cout<<z[i]<<" "; cout<<endl;
ok=1;
for(i=1;i<=k-1;i++)
if(a[z[i]] [z[i+1]]==0) ok=0;
if(ok) cout<<"\n Este lant";
else cout<<"\n Nu este lant";
if (ok)
{for(i=1;i<=k-1;i++)
for(j=i+1; j<=k; j++)
if(z[i]==z[j]) ok=0;
if(ok) cout<<"\n Elementar";
else cout<<"\n Ne elementar";
}
}
int main()
{citire_ma_f(); afisare_ma();
verif_lant();
return 0;
}
2) void verific_lant()
- citire secv “lant1.txt” intr-un vector z[k]
- afis vector z[k]
- verific_lant
dc nu exista muchie intre vf consec din secv ok=0 este/nu este lant
“graf.txt"
5
dc trece de 2 ori prin ac vf ok=0 este / nu este elem
01010
10110
01011
11100
00100
“lant1.txt"
21453
“lant2.txt"
4
“lant3.txt"
12353
1435
1
Descargar