社区讨论

洛谷g++出问题了?

工单反馈版参与者 2已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@mi6ymae7
此快照首次捕获于
2025/11/20 12:57
4 个月前
此快照最后确认于
2025/11/20 12:57
4 个月前
查看原帖
代码:
CPP
#include <cstdio>
#include <cstring>

const int maxn = 1005;
bool graph[maxn][maxn];
int vis[maxn][maxn];
int cnt[1000005];

int n, m;
char ch;
int nowID = 1;

int i2, j2;

const int di[4] = {0, 1, 0, -1};
const int dj[4] = {1, 0, -1, 0};

void dfs(int i = 0, int j = 0, int depth = 0)
{
	vis[i][j] = nowID;
	cnt[nowID]++;
	for (int k = 0; k < 4; ++k)
	{
		i2 = i + di[k];
		j2 = j + dj[k];
		if (i2 >= 0 && j2 >= 0 && i2 < n && j2 < n && !vis[i2][j2] && (graph[i][j] != graph[i2][j2]))
			dfs(i2, j2, depth + 1);
	}
	if (!depth)
		nowID++;
}

int main()
{
	scanf("%d%d", &n, &m);
	getchar();
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
			ch = getchar();
			if (ch == '0')
				graph[i][j] = false;
			else
				graph[i][j] = true;
		}
		getchar();
	}

	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
			if (!vis[i][j])
				dfs(i, j);
	for (int k = 0; k < m; ++k)
	{
		int i, j;
		scanf("%d%d", &i, &j);
		printf("%d\n", cnt[vis[i - 1][j - 1]]);
	}
	return 0;
}

输入数据:
CPP
8 4
10010011
01100100
10010011
01011011
10001000
00011011
00101000
00000010
1 2
8 6
6 2
4 3
洛谷输出:
CPP
0
12
5
7
实际输出:
CPP
25
19
1
25
已经在以下环境下测试过,结果相同: Windows 10 64bit 17134 g++ 4.9.2 Ubuntu Server 16.04.5 64bit g++ 5.4.0
请求大佬帮忙找找出什么事了 多谢! kkksc03
哪个大佬帮忙召唤一下管理员啊

回复

9 条回复,欢迎继续交流。

正在加载回复...