Cod sursa(job #1984779)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 25 mai 2017 22:58:41
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 2.46 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define maxNumberOfNodes 400100

int numberOfNodes;
int numberOfEdges;
int sourceNode;
int index;
int queue[ maxNumberOfNodes ];
bool isVisited[ maxNumberOfNodes ];
int D[maxNumberOfNodes];
struct Nodes
{
        int data;
        struct Nodes *next;
};

struct Nodes *addiacencyList[ maxNumberOfNodes ];
struct Nodes *listIterator;


void add_to_list_forward(int node1, int node2)
{
        struct Nodes *head = malloc(sizeof(struct Nodes));
        head -> data = node2;
        head -> next = addiacencyList[node1];
        addiacencyList[node1] = head;


        /*struct Nodes *head2 = malloc(sizeof(struct Nodes));
        head2 -> data = node1;
        head2 -> next = addiacencyList[node2];
        addiacencyList[node2] = head2;*/
}


int main()
{
        freopen("bfs.in", "r", stdin);
        freopen("bfs.out", "w", stdout);

        scanf("%d %d %d", &numberOfNodes, &numberOfEdges, &sourceNode);

        /*for(index = 1; index <= numberOfEdges; index ++)
        {
                int node1;
                int node2;
                scanf("%d %d", &node1, &node2);
                //add_to_list_forward(node1, node2);
        } */

       /* int left = 1;
        int right = 1;
        queue[left] = sourceNode;
        isVisited[ sourceNode ] = true;
        D[ sourceNode ] = 0;

        while(left <= right)
        {
                int headQueue = queue[left];

                for(listIterator = addiacencyList[ headQueue ]; listIterator != NULL; listIterator = listIterator -> next)
                {
                        if( isVisited[ listIterator -> data ] == false)
                        {
                                isVisited[ listIterator -> data ] = true;
                                right = right + 1;
                                queue[right] = listIterator -> data;
                                D[ listIterator -> data] = D[ headQueue ] + 1;
                        }
                }
                left = left + 1;
        }

        for(index = 1; index <= numberOfNodes; index ++)
        {
                if(isVisited[index] == true)
                {
                        printf("%d ", D[index]);
                }
                else
                {
                        printf("-1 ");
                }
        }
*/
        fclose(stdin);
        fclose(stdout);


        return 0;
}