100pts过不了样例
查看原帖
100pts过不了样例
1283805
hongxiaodou楼主2024/12/4 20:32
#include <iostream>
#include <string>
#include <vector>
#include <set>
#define N 505
using namespace std;
set <vector <int> > st;
vector <int> s;
int mp[N][N];
int fx[6]{1,-1,0,0};
int fy[6]{0,0,-1,1};
int n,m;
int sx,sy;
void dfs(int col,int x,int y){
	mp[x][y] = 0;
	s.push_back((sx - x) * 500 + (sy - y));
	for (int i = 0;i < 4;i++){
		int nx = x + fx[i];
		int ny = y + fy[i];
		if (mp[nx][ny] == col) dfs(col,nx,ny);
	}
}
int main(){
	cin >> n >> m;
	for (int i = 1;i <= n;i++)
		for (int j = 1;j <= m;j++)
			cin >> mp[i][j];
	for (int i = 1;i <= n;i++)
		for (int j = 1;j <= n;j++)
			if (mp[i][j] != 0){
				while (s.size()) s.pop_back();
				sx = i,sy = j;
				dfs(mp[i][j],i,j);
				st.insert(s);
			}
	cout << st.size();
return 0;
}
2024/12/4 20:32
加载中...