Nessa prática voce implementará um simulador de rede social. Uma rede social de amizades com N pessoas pode ser representada por uma matriz quadrada \(N \times N\) onde cada linha (ou coluna) i contém as relações da pessoa i. A pessoa i é amiga da pessoa j se na posição [i][j] da matriz existe o valor 1. Elas não são amigas se o valor da posição [i][j] é 0. Por exemplo, considere a matriz abaixo:
0 1 1
1 0 1
1 1 0
Essa matriz representa uma rede social entre 3 pessoas onde cada integrante é amigo de todos os outros.
A relação de amizade é simétrica: se i é amigo de j, então j é, necessariamente, amigo de i. Além disso, em redes sociais de amizade, uma pessoa não pode ser amiga dela mesma, ou seja, a diagonal da matriz de amizades é 0.
Implemente um programa para ler uma matriz de amizades da entrada padrão e imprimir os pares de amigos da rede social.
Seu programa irá receber uma matriz quadrada \(5 \times 5\) da entrada padrão, por exemplo:
0 1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
Utilize o esqueleto abaixo para fazer a leitura da entrada padrão e colocar os dados na matriz amizades.
#define NUN_USERS 5
int main() {
int amizades[NUN_USERS][NUN_USERS];
// Implemente seu programa aqui
// Utilize a funcao fscanf para ler da entrada padrao
return 0;
}Seu programa deve imprimir os pares de amigos. Não imprima amizades repetidas. Para cada amizade i e j imprima uma linha com dois inteiros contendo os valores de i e j separados por espaço onde o primeiro número é sempre menor que o segundo. Por exemplo, se a pessoa 2 é amiga da pessoa 3, sua saída deve conter a linha 2 3 e não deve conter a linha 3 2.
Por exemplo, para a entrada acima, seu programa deve imprimir.
0 1
0 2
0 3
0 4
1 2
1 3
1 4
2 3
2 4
3 4
Exemplo de uso da função fscanf. A chamada abaixo coloca um valor lido da entrada padrão na posição [i][j] da matriz. A função fscanf ignora espaços em branco (inclusive quebras de linha) ao fazer a leitura de um inteiro ("%d").
int v;
fscanf(stdin, "%d", &v);
amizades[i][j] = v;