URI Online Judge | 0002

Seguidores e Seguidos

Por José Francisco dos Santos Neto, USP - Universidade de São Paulo BR Brazil

Timelimit: 1

Teoria dos Grafos

A teoria dos grafos é um ramo da matemática que estuda as relações entre os objetos de um determinado conjunto. Para tal são empregadas estruturas chamadas de grafos, G(V,E), onde V é um conjunto não vazio de objetos denominados vértices (ou nós) e E (do inglês Edges - arestas) é um subconjunto de pares não ordenados de V.

Dependendo da aplicação, arestas podem ou não ter direção, pode ser permitido ou não arestas ligarem um vértice a ele próprio e vértices e/ou arestas podem ter um peso (numérico) associado. Se as arestas têm uma direção associada (indicada por uma seta na representação gráfica) temos um digrafo (grafo orientado). Um grafo com um único vértice e sem arestas é conhecido como grafo trivial.

Grafo com 4 vértices e 6 arestas (Fonte: Wikipedia).

Matriz de Adjacência

Uma matriz de adjacência é uma das formas de se representar um grafo.

Dado um grafo G com n vértices, podemos representá-lo em uma matriz n x n A(G)=[aij] (ou simplesmente A). A definição precisa das entradas da matriz varia de acordo com as propriedades do grafo que se deseja representar, porém de forma geral o valor aij guarda informações sobre como os vértices vi e vj estão relacionados (isto é, informações sobre a adjacência de vi e vj).

Para representar um grafo não direcionado, simples e sem pesos nas arestas, basta que as entradas aij da matriz A contenham 1 se vi e vj são adjacentes e 0 caso contrário. Se as arestas do grafo tiverem pesos, aij pode conter, ao invés de 1 quando houver uma aresta entre vi e vj, o peso dessa mesma aresta.

Por exemplo, o grafo e a matriz correspondente (Fonte: Wikipedia).

Uma rede social pode ser representada por um grafo direcionado onde os vértices representam as pessoas e as arestas representam as ligações entre elas. A direção da aresta indica quem segue quem.

O Programa

Escreva um programa que, dado um grafo direcionado representando uma rede social, monte a respectiva matriz de adjacência e calcule:

e mostre as pessoas que se seguem mutuamente.

Entrada

A entrada consiste em duas linhas:

Saída

A saída consiste em:

Não esqueça de imprimir o fim de linha após o cada linha da saída, caso contrário, você receberá "Presentation Error".

Exemplo de Entrada Exemplo de Saída

Maria|José|João|Pedro|Antônio|Francisco

José|Maria|Pedro|João|Francisco|Maria|Antônio|Pedro|Francisco|Pedro|Pedro|Antônio|Maria|José|João|Pedro|Maria|Francisco

0 1 0 0 0 1

1 0 0 0 0 0

0 0 0 1 0 0

0 0 1 0 1 0

0 0 0 1 0 0

1 0 0 1 0 0

3 Pedro

1 José|João|Antônio|Francisco

2 Maria|Pedro|Francisco

1 José|João|Antônio

Maria|José|Maria|Francisco|João|Pedro|Pedro|Antônio