Percebi que várias pessoas cometeram o mesmo erro na criação do grafo de "dependências" da tarefa 3. imagino que o problema já tenha sido percebido pelas pessoas que o cometeram (ou a tarefa 4 não está fazendo sentido)
A ideia do grafo de dependências é manter uma estrutura que indica quais regras dependem de quais e que vai ser usada na tarefa 4 para verificar se não existem dependencias circulares e simular a execução do make.
OU SEJA, se o arquivo MakeFile é
aaa: bbb ccc
<TAB>comandos
ddd:
<TAB>outros comandos
ccc: bbb ddd
<TAB>mais comandos
o grafo de dependências tem quatro vértices (e não sete!): aaa bbb ccc ddd, e as arestas aaa->bbb aaa->ccc ccc->bbb ccc->ddd, onde a aresta u->v indica que é necessário tratar v antes de u.
Verificar se um vértice já existe antes de adicioná-lo ao grafo é uma parte importante da tarefa...