?? pku2585.cpp
字號:
#include <stdio.h>
#include <string.h>
#define ONLINE
#ifndef ONLINE
#include <time.h>
#endif
int M[4][4];
int p[9][9];
int stack[10];
int top;
int in[10];
void Solve()
{
int i, j, ii, jj, v, cnt, pos;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
scanf("%d", &M[i][j]);
}
}
memset(p, 0, sizeof(p));
for (i = 0; i < 9; i++)
{
ii = i / 3;
jj = i % 3;
p[i][M[ii][jj] - 1] = 1;
p[i][M[ii + 1][jj] - 1] = 1;
p[i][M[ii][jj + 1] - 1] = 1;
p[i][M[ii + 1][jj + 1] - 1] = 1;
p[i][i] = 0;
}
v = -1;
memset(in, 0, sizeof(in));
top = 0;
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
in[i] += p[j][i];
}
if (in[i] == 0)
{
stack[top] = i;
top++;
}
}
cnt = 0;
while (top)
{
cnt++;
pos = stack[--top];
for (i = 0; i < 9; i++)
{
if (p[pos][i])
{
in[i]--;
if (in[i] == 0)
{
stack[top++] = i;
}
}
}
}
if (cnt < 9)
{
printf("THESE WINDOWS ARE BROKEN\n");
}
else
{
printf("THESE WINDOWS ARE CLEAN\n");
}
}
int main()
{
#ifndef ONLINE
freopen("PKU2585.in", "r", stdin);
clock_t start = clock();
#endif
char s[15];
while (1)
{
scanf("%s", s);
if (strcmp(s, "ENDOFINPUT") == 0)
{
break;
}
Solve();
scanf("%s", s);
}
#ifndef ONLINE
printf("TIME:%dms\n", clock() - start);
#endif
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -