LISTAVECINI

Se dă lista muchiilor unui graf neorientat. Să se afișeze, pentru fiecare vârf al grafului, lista vecinilor săi.

Date de intrare

Fişierul de intrare listavecini.in conţine pe prima linie numărul n, reprezentând numărul de vârfuri ale grafului. Fiecare dintre următoarele linii conține câte o pereche de numere i j, cu semnificația că există muchie între i și j.

Date de ieşire

Fişierul de ieşire listavecini.out va conţine n linii. Fiecare linie i va conține numărul de vecini ai vârfului i urmat de aceștia, în ordine crescătoare.

Restricţii şi precizări

  • 1 ≤ n ≤ 100
  • 1 ≤ i , j ≤ n
  • muchiile se pot repeta în fișierul de intrare

Exemplu

listavecini.in

5
1 4 
1 3 
3 5 
4 5 
2 4 
1 2 
4 2 
3 4 

listavecini.out

3 2 3 4 
2 1 4 
3 1 4 5 
4 1 2 3 5 
2 3 4 

SOLUTIE

include

using namespace std;
ifstream cin(“listavecini.in”);
ofstream cout(“listavecini.out”);

int n,a[150][150];

void citire()
{
cin>>n;
int x,y;
while(cin>>x && cin>>y)
a[x][y] = 1;

}

void rezolvare()
{
for(int i=1;i<=n;i++){
int nr_vec = 0;
for(int j = 1;j<=n;j++)
if((a[i][j] || a[j][i]) && i != j)
nr_vec++;
cout<<nr_vec<<” “;
for(int j = 1;j<=n;j++)
if((a[i][j] || a[j][i]) && i != j)
cout<<j<<” “;
cout<<‘\n’;
}
}

int main()
{
citire();
rezolvare();
}