# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
28157 | 시.공.조.아. (#71) | The City and The Bitcoin (FXCUP2_city) | C11 | 9 ms | 6836 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <stdlib.h>
short Box[301][301];
int di[2] = { 0,1};
int dj[2] = { 1,0};
int N, M, result;
typedef struct {
short row, col;
struct ListNode *next;
}ListNode;
typedef struct {
ListNode *front, *rear;
short 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 (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |