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;
// where n*m <= 1e6;
vector<vector<int> > vis;
vector<vector<int> > cur;
vector<vector<int> > dis;
vector<vector<int> > size;
vector<vector<int> > r;
vector<vector<char> > c;
vector<vector<char> > 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];
}
}
What wrong's in it I don't understand.