# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
28170 | 시.공.조.아. (#71) | 도시와 비트코인 (FXCUP2_city) | C11 | 76 ms | 1116 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#include <stdlib.h>
short Box[10][10];
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 == M - 1 && j == N - 1) {
result = 1;
break;
}
int ni = i + di[k];
int nj = j + dj[k];
if (0 <= nj && nj < N && 0 <= ni && ni < M)
{
if (Box[ni][nj] == 1){
if (ni == M - 1 && nj == N - 1) {
result = 1;
break;
}
else
Enqueue(Q, ni, nj);
}
}
}
}
int main()
{
int i, j;
Queue Q;
ListNode *temp;
init(&Q);
scanf("%d %d", &N, &M);
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &Box[i][j]);
}
}
Box[0][0] = 1;
Box[M - 1][N - 1] = 1;
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");
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |