#include <stdio.h>
#include <stdlib.h>
int Box[301][301];
int di[2] = { 0,1};
int dj[2] = { 1,0};
int N, M, result;
typedef struct {
int row, col;
struct ListNode *next;
}ListNode;
typedef struct {
ListNode *front, *rear;
int cnt;
}Queue;
void init(Queue *Q)
{
Q->front = Q->rear = NULL;
Q->cnt = 0;
}
int Queue_Emtpy(Queue *Q)
{
if (Q->cnt == 0)
return 1;
else
return 0;
}
void Enqueue(Queue *Q, int row, int col)
{
ListNode *temp = (ListNode *)malloc(sizeof(ListNode));
temp->row = row;
temp->col = col;
temp->next = NULL;
if (Queue_Emtpy(Q)) {
Q->front = temp;
}
else {
Q->rear->next = temp;
}
Q->rear = temp;
Q->cnt++;
}
ListNode *Dequeue(Queue *Q)
{
ListNode *current;
current = Q->front;
Q->front = current->next;
Q->cnt--;
return current;
}
void go(Queue *Q, int i, int j)
{
int k;
for (k = 0; k < 2; k++) {
if (i == N - 1 && j == M - 1) {
result = 1;
break;
}
int ni = i + di[k];
int nj = j + dj[k];
if (0 <= nj && nj < M && 0 <= ni && ni < N)
{
if (Box[ni][nj] == 1){
if (ni == N - 1 && nj == M - 1) {
result = 1;
break;
}
else
Enqueue(Q, ni, nj);
}
}
}
}
int main()
{
int i, j;
Queue Q;
ListNode *temp;
init(&Q);
scanf("%d %d", &M, &N);
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
scanf("%d", &Box[i][j]);
}
}
Enqueue(&Q, 0, 0);
while (!Queue_Emtpy(&Q)) {
temp = Dequeue(&Q);
go(&Q, temp->row, temp->col);
}
if (result == 1)
printf("Yes");
else
printf("No");
}
Compilation message
city.c: In function 'Enqueue':
city.c:45:17: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
Q->rear->next = temp;
^
city.c: In function 'Dequeue':
city.c:55:11: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
Q->front = current->next;
^
city.c: In function 'main':
city.c:91:2: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d", &M, &N);
^
city.c:94:4: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &Box[i][j]);
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1468 KB |
Output is correct |
2 |
Correct |
0 ms |
1468 KB |
Output is correct |
3 |
Correct |
0 ms |
1468 KB |
Output is correct |
4 |
Memory limit exceeded |
93 ms |
65536 KB |
Memory limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |