QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#601760 | #8507. Clever Cell Choices | Forever_Young# | Compile Error | / | / | C++23 | 2.6kb | 2024-09-30 12:45:00 | 2024-09-30 12:45:00 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define R register int
#define AC 110
#define ac 81000
int n, m, num;
int Head[ac], Next[ac], date[ac], tot;
int link[ac], match[ac], id[AC][AC], a[6] = {-1, 1, 0, 0}, b[6] = {0, 0, -1, 1};
char s[AC][AC];
bool vis[ac], z[ac];
struct node{int x, y;}back[ac];
inline void add(int f, int w)
{
date[++ tot] = w, Next[tot] = Head[f], Head[f] = tot;
date[++ tot] = f, Next[tot] = Head[w], Head[w] = tot;
}
bool dfs(int x)
{
for(R i = Head[x]; i; i = Next[i])
{
int now = date[i];
if(vis[now]) continue;
vis[now] = true;
if(!link[now] || dfs(link[now]))
{
link[now] = x, match[x] = now;
return 1;
}
}
return 0;
}
void cal()
{
memset(link, 0, sizeof(link));
for(R i = 1; i <= num; i ++)
{
if(!(i & 1)) continue;
memset(vis, 0, sizeof(vis)), dfs(i);
}
}
void pre()
{
scanf("%d%d", &n, &m), num = n * m;
for(R i = 1; i <= n; i ++) scanf("%s", s[i] + 1);
int tmp1 = 1, tmp2 = 2;
for(R i = 1; i <= n; i ++)
{
for(R j = 1; j <= m; j ++)
{
if((i + j) & 1) id[i][j] = tmp2, back[tmp2] = (node){i, j}, tmp2 += 2;
else id[i][j] = tmp1, back[tmp1] = (node){i, j}, tmp1 += 2;
}
}
for(R i = 1; i <= n; i ++)
for(R j = 1; j <= m; j ++)
{
if(s[i][j] == '#') continue;
for(R k = 0; k <= 3; k ++)
{
int x = i + a[k], y = j + b[k];
if(x <= 0 || x > n || y <= 0 || y > m || s[x][y] == '#') continue;
int s = id[i][j], t = id[x][y];
(s & 1) ? add(s, t) : add(t, s);
}
}
}
void dfs1(int x)
{
if(z[x]) return ;
z[x] = true;
for(R i = Head[x]; i; i = Next[i]) dfs1(link[date[i]]);
}
void dfs2(int x)
{
if(z[x]) return ;
z[x] = true;
for(R i = Head[x]; i; i = Next[i]) dfs2(match[date[i]]);
}
void work()
{
for(R i = 1; i <= num; i ++)
{
if(s[back[i].x][back[i].y] == '#') continue;
if((i & 1) && !match[i]) dfs1(i);
else if(!(i & 1) && !link[i]) dfs2(i);
}
bool done = false;
for(R i = 1; i <= n; i ++)
for(R j = 1; j <= m; j ++)
if(z[id[i][j]]) {done = true; break;}
if(!done) {printf("0\n"); return ;}
int ans=0;
for(R i = 1; i <= n; i ++)
for(R j = 1; j <= m; j ++)
if(z[id[i][j]]) ans++;
printf("%d\n",ans);
}
int main()
{
pre();
cal();
work();
return 0;
}
详细
answer.code:9:12: error: ‘int link [81000]’ redeclared as different kind of entity 9 | int link[ac], match[ac], id[AC][AC], a[6] = {-1, 1, 0, 0}, b[6] = {0, 0, -1, 1}; | ^ In file included from /usr/include/c++/13/bits/atomic_wait.h:44, from /usr/include/c++/13/bits/atomic_base.h:42, from /usr/include/c++/13/bits/shared_ptr_atomic.h:33, from /usr/include/c++/13/memory:81, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:56, from answer.code:1: /usr/include/unistd.h:789:12: note: previous declaration ‘int link(const char*, const char*)’ 789 | extern int link (const char *__from, const char *__to) | ^~~~ answer.code: In function ‘bool dfs(int)’: answer.code:23:11: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 23 | for(R i = Head[x]; i; i = Next[i]) | ^ answer.code:28:21: warning: pointer to a function used in arithmetic [-Wpointer-arith] 28 | if(!link[now] || dfs(link[now])) | ^ answer.code:28:38: warning: pointer to a function used in arithmetic [-Wpointer-arith] 28 | if(!link[now] || dfs(link[now])) | ^ answer.code:28:38: error: invalid conversion from ‘int (*)(const char*, const char*) noexcept’ to ‘int’ [-fpermissive] 28 | if(!link[now] || dfs(link[now])) | ~~~~~~~~^ | | | int (*)(const char*, const char*) noexcept answer.code:21:14: note: initializing argument 1 of ‘bool dfs(int)’ 21 | bool dfs(int x) | ~~~~^ answer.code:30:21: warning: pointer to a function used in arithmetic [-Wpointer-arith] 30 | link[now] = x, match[x] = now; | ^ answer.code:30:23: error: assignment of read-only location ‘*(link + ((sizetype)now))’ 30 | link[now] = x, match[x] = now; | ~~~~~~~~~~^~~ answer.code: In function ‘void cal()’: answer.code:39:28: error: ISO C++ forbids applying ‘sizeof’ to an expression of function type [-fpermissive] 39 | memset(link, 0, sizeof(link)); | ~^~~~~ answer.code:39:12: error: invalid conversion from ‘int (*)(const char*, const char*) noexcept’ to ‘void*’ [-fpermissive] 39 | memset(link, 0, sizeof(link)); | ^~~~ | | | int (*)(const char*, const char*) noexcept In file included from /usr/include/features.h:461, from /usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h:39, from /usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h:679, from /usr/include/c++/13/cassert:43, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:33: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:59:1: note: initializing argument 1 of ‘void* memset(void*, int, size_t)’ 59 | __NTH (memset (void *__dest, int __ch, size_t __len)) | ^~~~~ answer.code:40:11: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 40 | for(R i = 1; i <= num; i ++) | ^ answer.code: In function ‘void pre()’: answer.code:50:11: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 50 | for(R i = 1; i <= n; i ++) scanf("%s", s[i] + 1); | ^ answer.code:52:11: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 52 | for(R i = 1; i <= n; i ++) | ^ answer.code:54:15: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 54 | for(R j = 1; j <= m; j ++) | ^ answer.code:61:11: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 61 | for(R i = 1; i <= n; i ++) | ^ answer.code:62:15: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 62 | for(R j = 1; j <= m; j ++) | ^ answer.code:65:19: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 65 | for(R k = 0; k <= 3; k ++) | ^ answer.code: In function ‘void dfs1(int)’: answer.code:79:11: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister] 79 | for(R i = Head[x]; i; i = Next[i]) dfs1(link[date[i]]); | ^ answer.code:79:57: warning: pointer to a function used in arithmetic [-Wpointer-arith] 79 | for(R i = Head[x]; i; i = Next[i]) dfs1(link[date[i]]); | ^ answer.code:79:57: error: invalid conversion from ‘int (*)(const char*, const char*) noexcept’ to ‘int’ [-fpermissive] 79 | for(R i = Head[x]; i; i = Next[i]) dfs1...