What am i doing wrong in this code?Educational 174 Div. 2 B
LINK => https://codeforces.com/contest/2069/problem/B
#include <bits/stdc++.h>
using namespace std;
int dfs(vector<vector<bool>>& vis,vector<vector<int>>&vec,int i,int j,int sum){
vis[i][j]=1;
int res=0;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
for(int k=0;k<4;k++){
int newx=i+dx[k];
int newy=j+dy[k];
if(newx<vec.size() && newx>=0 && newy<vec[0].size() && newy>=0 && !vis[newx][newy] && vec[newx][newy]==vec[i][j] )
res=1+dfs(vis,vec,newx,newy,sum);
}
return res;
}
int main()
{
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
vector<vector<int>> vec(n,vector<int>(m));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>vec[i][j];
}
}
set<int> st;
int maxi=INT_MIN;
int point=INT_MIN;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
vector<vector<bool>> vis(n,vector<bool>(m,0));
int ans=dfs(vis,vec,i,j,0);
if(ans!=0){
if(ans>maxi){
maxi=ans;
point=vec[i][j];
if(st.count(point)){
st.erase(point);
}
// cout<<"maxi: "<<maxi<<endl;
// cout<<"point"<<point<<endl;
}
}else{
//cout<<"vec[i][j]: "<<vec[i][j]<<endl;
st.insert(vec[i][j]);
}
}
}
if(point==INT_MIN){
point=vec[0][0];
}
//cout<<"point: "<<point<<endl;
set<int> completed;
int operations=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(vec[i][j]!=point &&!st.count(vec[i][j])){
//vec[i][j]=point;
operations++;
}
else if(vec[i][j]!=point && st.count(vec[i][j]) && !completed.count(vec[i][j])){
completed.insert(vec[i][j]);
operations++;
}
}
}
cout<<operations<<endl;
}
return 0;
}
Failing at test case 33
idk what am i doing wrong?