Sunteți pe pagina 1din 4

Grafuri orientate d)multimea gama plus pentru un nod x citit de la tastatura

Se citesc de la tastatură doi întregi m și n reprezentând cin>>x;


numărul de arce respectiv vârfuri ale unui graf orientat, apoi m perechi cout<<"gama+("<<x<<")=";
de numere naturale de forma (x,y), reprezentând extremitățile for(j=1;j<=n;j++)
celor m arce din graf. Scrieți un program care if(a[x][j]==1) cout<<j<<" ";
#include <iostream> cout<<endl;
using namespace std; e)mulțimea omega minus pentru un nod x citit de la tastatura
int a[100][100]; cin>>x;
int main() cout<<"omega-("<<x<<")=";
{int n,m,i,j,k,x,y; for(i=1;i<=n;i++)
cin>>n>>m; if(a[i][x]==1) cout<<"("<<i<<","<<x<<")";
for(i=1;i<=m;i++) cout<<endl;
{cin>>x>>y;
a[x][y]=1;} -Matricea drumurilor:
a) construiește și afișează matricea de adiacență atașată grafului for(k=1;k<=n;k++)
for(i=1;i<=n;i++) for(i=1;i<=n;i++)
{for(j=1;j<=n;j++) for(j=1;j<=n;j++)
cout<<a[i][j]<<" "; if(a[i][j]==0 && i!=k && j!=k)
cout<<endl;} a[i][j]=a[i][k]*a[k][j];
b) gradul exterior d+(x) pentru un nod x citit de la tastatură. Teorema: Numărul grafurilor orientate complete cu n noduri este;
for(j=1;j<=n;j++) 𝑛(𝑛−1)/2
3 ;
if(a[i][j]!=0) nr++; +
cout<<"d+("<<x<<")="<<nr<<endl; 𝑑 (𝑖) = 𝑛𝑟. 𝑎𝑟𝑐𝑒𝑙𝑜𝑟 𝑐𝑎𝑟𝑒 𝑖𝑒𝑠 𝑑𝑖𝑛 𝑛𝑜𝑑𝑢𝑙 𝑖;

c)gradul interior d-(x) pentru toate nodurile grafului orientat. 𝑑 (𝑖) = 𝑛𝑟. 𝑎𝑟𝑐𝑒𝑙𝑜𝑟 𝑐𝑎𝑟𝑒 𝑖𝑛𝑡𝑟𝑎 𝑖𝑛 𝑛𝑜𝑑𝑢𝑙 𝑖;
for(j=1;j<=n;j++) +
{nr=0; 𝚪 (𝑥) = 𝑚𝑢𝑙ț𝑖𝑚𝑒𝑎 𝑛𝑜𝑑𝑢𝑟𝑖𝑙𝑜𝑟 𝑠𝑝𝑟𝑒 𝑐𝑎𝑟𝑒 𝑝𝑙𝑒𝑎𝑐ă 𝑎𝑟𝑐 𝑑𝑖𝑛 𝑥;

for(i=1;i<=n;i++) 𝚪 (𝑥) = 𝑚𝑢𝑙ț𝑖𝑚𝑒𝑎 𝑛𝑜𝑑𝑢𝑟𝑖𝑙𝑜𝑟 𝑑𝑒 𝑙𝑎 𝑐𝑎𝑟𝑒 𝑖𝑛𝑡𝑟𝑎 𝑎𝑟𝑐 𝑖𝑛 𝑥;
if(a[i][j]!=0) nr++; +
ω (𝑥) = 𝑚𝑢𝑙ț𝑖𝑚𝑒𝑎 𝑎𝑟𝑐𝑒𝑙𝑜𝑟 𝑐𝑎𝑟𝑒 𝑖𝑒𝑠 𝑑𝑖𝑛 𝑛𝑜𝑑𝑢𝑙 𝑥;
cout<<"d-("<<j<<")="<<nr<<endl;}

ω (𝑥) = 𝑚𝑢𝑙ț𝑖𝑚𝑒𝑎 𝑎𝑟𝑐𝑒𝑙𝑜𝑟 𝑐𝑎𝑟𝑒 𝑖𝑛𝑡𝑟𝑎 î𝑛 𝑛𝑜𝑑𝑢𝑙 𝑥;

1
Grafuri neorientate
Se citesc de la tastatura doua valori naturale n și m d) Să se afișeze varfurile izolate ale grafului.
for(i=1;i<=n;i++)
reprezentând numărul de vârfuri respective numărul de muchii ale
{int nr=0;
unui graf neorientat, apoi m perechi de forma (x,y) (1<=x; y<=n) =lista
for(j=1;j<=n;j++)
muchiilor. if(a[i][j]!=0) nr++;
#include <iostream> if(nr==0) cout<<i<<" ";
using namespace std; cout<<endl;
int a[100][100]; e) Să se afișeze varfurile de grad maxim.
int main() for(i=1;i<=n;i++)
{ {for(j=1;j<=n;j++)
int n,m,x,y,i,j; if(a[i][j]!=0)d[i]++;
cin>>n>>m; if(d[i]>max) max=d[i];}
for(i=1;i<=m;i++) for(i=1;i<=n;i++)
{cin>>x>>y; if(d[i]==max) cout<<i<<" ";
a[x][y]=1; f) Să se afișeze varfurile terminale ale grafului.
a[y][x]=1;} ok=0;
a) Să se afișeze matricea de adiacență a grafului. for(i=1;i<=n;i++)
for(i=1;i<=n;i++) {nr=0;
{for(j=1;j<=n;j++) for(j=1; j<=n; j++)
cout<<a[i][j]<<" "; if(a[i][j]==1) nr++;
cout<<endl;} if(nr==1) {cout<<i<<" ";
b) Să se afișeze, pentru fiecare vârf al grafului, lista vecinilor săi. ok=1;}}
for(i=1;i<=n;i++) if(ok==0)cout<<"NU EXISTA";
{cout<<i<<"_"; g) Să se afișeze varfurile de grad minim.
for(j=1;j<=n;j++) int min=m;
if(a[i][j]==1) for(i=1;i<=n;i++)
cout<<j<<" "; {for(j=1;j<=n;j++)
cout<<endl;} if(a[i][j]!=0) d[i]++;
c) Să se afișeze gradul fiecărui vârf. if(d[i]<min) min=d[i];}
for(i=1;i<=n;i++) cout<<"min="<<min<<endl;
{int nr=0; for(i=1;i<=n;i++)
for(j=1;j<=n;j++) if(d[i]==min) cout<<i<<" ";
if(a[i][j]!=0) nr++; return 0;
cout<<"d("<<i<<")"<<m<<endl; }

2
Rezolvare model teza
6.Se citesc de la tastatură doi întregi m și n reprezentând numărul de muchii 7. Se citesc de la tastatură două valori naturale n(numărul de vârfuri) și
respectiv vârfuri ale unui graf orientat, apoi m perechi de numere naturale de m(numărul de muchii), precum și coordonatele(x,y) celor m muchii ale unui
forma (x,y), reprezentând extremitățile celor m arce din graf. graf neorientat cu n noduri și costul lor(c). Realizați un program care să se
Scrieți un program care construiește și afișează matricea de adiacență determine și afișeze pe ecran costul mediu precum și coordonatele muchiilor
atașată grafului precum și gradul exterior d+(x) și mulțimea ω-(x), pentru un de cost minim.
nod x citit de la tastatură.
#include<iostream> #include<iostream>
using namespace std; using namespace std;
int a[100][100]; int main()
int main() {int n,m,x,y,c,i,j;
{int n,m,i,j,x,y,nr=0; con>>n>>m;
cin>>n>>m; float s=0;
for(i=1;i<=n;i++) for(i=1;i<=n;i++)
{cin>>x>>y; cin>>x>>y>>c;
a[x][y]=1;} a[x][y]=c;
for(i=1;i<=n;i++) a[y][x]=c;
{for(j=1;j<=m;j++) s=s+c;
cout<<a[i][j]<<" "; if(min>c) min=c;
cout<<endl;} {for(j=i+1;j<=n;j++)
cin>>x; if(a[i][j]=c)
cout<<"d+("<<x<<")="; cout<<i<<" "<<j<<endl;}
for(j=1;j<=n;j++) return 0;}
if(a[i][j]!=1) nr++;
cout<<nr<<endl;
cout<<"omega-("<<x<<")=";
for(i=1;i<=n;i++)
if(a[i][j]==1) cout<<i<<","<<x<<" ";
return 0;}

3
4

S-ar putea să vă placă și