Orar semigroup #2

Orar semigroup #2

01/18 - Probleme Grafuri

1. Se citeşte un număr n şi matricea de adiacenţă a unui graf. Să se afişeze muchiile şi listele de vecini.

#include<iostream>
#include<fstream>
using namespace std;
int main()
{ifstream f("date");
int a[10][10],i,j,k=1,n,m,v[10],max=0;
f>>n;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];

cout<<"Liste de vecini"<<endl;
for(i=1;i<=n;i++)
{
cout<<i<<":";
for(j=1;j<=n;j++)
    if(a[i][j]==1)
        cout<<j<<",";
cout<<endl;
}

cout<<"Muchii"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
    if(i<j)
    if(a[i][j]==1)
        cout<<i<<","<<j<<endl;
}
2. Se citesc două numere n şi m. Să se afişeaze matricea de adiacenţă pentru un graf cu n noduri şi m muchii. Verificaţi dacă valoarea lui m este corectă (m<n(n-1)/2).
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int a[10][10],i,j,k=0,n,m,v[10],max=0;
int main()
{ifstream f("date");
cin>>n;
m=n*(n-1)/2;

while(k<m)
{
i=rand()%n +1;
j=rand()%n +1;
if(i!=j && !a[i][j]){ a[i][j]=a[j][i]=1; k++;}
}

cout<<"Afisare matrice"<<endl;
for(i=1;i<=n;i++)
    {for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;
}
}

miercuri, 18 ianuarie 2012 by DlMuresan
Categories: | Leave a comment

Leave a Reply