I solved this problem https://mirror.codeforces.com/problemset/problem/1335/F get memory limit exceed on test case 46 by this solution https://mirror.codeforces.com/contest/1335/submission/76658211 and get accepted by this solution https://mirror.codeforces.com/contest/1335/submission/77233784. I only change the type to resize and initialize the vector;
vector<vector > vis; vector<vector > cur; vector<vector > dis; vector<vector > size; vector<vector > r; vector<vector > c; vector<vector > path;
vis.resize(n); path.resize(n); cur.resize(n); // by this get memory limit exceed. c.resize(n); dis.resize(n); r.resize(n); siz.resize(n); for(int i = 0; i < n; i++){ vis[i].resize(m, 0); path[i].resize(m); cur[i].resize(m, 0); c[i].resize(m); dis[i].resize(m, -1); r[i].resize(m, -1); siz[i].resize(m, 0); for(int j = 0; j < m; j++){ siz[i][j] = vis[i][j] = cur[i][j] = 0; r[i][j] = dis[i][j] = -1; cin >> c[i][j]; } } vis.resize(n); path.resize(n); cur.resize(n); c.resize(n); dis.resize(n); r.resize(n); // by this get accepted siz.resize(n); for(int i = 0; i < n; i++){ vis[i].resize(m); cur[i].resize(m); dis[i].resize(m); r[i].resize(m); siz[i].resize(m); c[i].resize(m); path[i].resize(m); for(int j = 0; j < m; j++){ siz[i][j] = vis[i][j] = cur[i][j] = 0; r[i][j] = dis[i][j] = -1; cin >> c[i][j]; } }