Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct Node {
- int number;
- struct Node *next;
- } Node;
- Node *makeNode(int number) {
- Node *result;
- result = (Node*)malloc(sizeof(Node));
- result->number = number;
- result->next = NULL;
- return result;
- }
- void *insertNode(Node *Queue, int number) {
- Node *cur = Queue;
- while (cur->next)
- cur = cur->next;
- cur->next = makeNode(number);
- }
- void printNode(Node *Queue) {
- Node *cur = Queue;
- while (cur->next) {
- cur = cur->next;
- printf("%d ", cur->number);
- }
- printf("\n");
- }
- void BFS(int arr[101][101], int max, int start) {
- Node *Queue = makeNode(start);
- int i, q_idx = 0;
- arr[start][start] = -1;
- while (Queue) {
- printf("%d\n", Queue->number);
- start = Queue->number;
- for (i = 1; i <= max; i++) {
- if (arr[start][i] == 1) {
- arr[start][i] = arr[i][start] = 0;
- if (arr[i][i] != -1) {
- arr[i][i] = -1;
- insertNode(Queue, i);
- }
- }
- }
- Queue = Queue->next;
- }
- }
- int main(void) {
- int n, m, s, i, j, x ,y;
- int arr[101][101];
- for (i = 0; i < 101; i++)
- for (j = 0; j < 101; j++)
- arr[i][j] = 0;
- scanf("%d %d %d", &n, &m, &s);
- for (i = 1; i <= m; i++) {
- scanf("%d %d", &x, &y);
- arr[x][y] = arr[y][x] = 1;
- }
- BFS(arr, n, s);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement