|
|
вернуться в форумPlease help me, Crash #19 Can someone help me to debug this C++ code? It got crash at 19th test-case. #include<cstdio> #include<vector> #include<queue> using namespace std; vector<int> p[1005]; vector<int> idxs[10005]; int dist[10005]; int bef[10005]; queue<int> q; void print(int n) { if(n!=-1) { print(bef[n]); printf("%d ",n); } } int main() { int n,m,c,d,awl,akh,tmp; bool sudah = false; scanf("%d%d",&m,&n); for(c=0;c<=n;c++) { dist[c] = 10000000; bef[c] = -1; } for(c=0;c<m;c++) { scanf("%d",&d); while(d--) { scanf("%d",&tmp); p[c].push_back(tmp); idxs[tmp].push_back(c); } } scanf("%d%d",&awl,&akh); dist[awl] = 0; q.push(awl); while(!q.empty()) { tmp = q.front(); q.pop(); n = idxs[tmp].size(); for(c=0;c<n;c++) { m = p[idxs[tmp][c]].size(); for(d=0;d<m;d++) if(p[idxs[tmp][c]][d]!=tmp) if(dist[p[idxs[tmp][c]][d]] > dist[tmp]+1) { dist[p[idxs[tmp][c]][d]] = dist[tmp] + 1; bef[p[idxs[tmp][c]][d]] = tmp; if(p[idxs[tmp][c]][d]==akh) sudah = true; else q.push(p[idxs[tmp][c]][d]); } if(sudah) break; } if(sudah) break; } if(dist[akh]==10000000) { printf("-1\n"); return 0; } printf("%d\n",dist[akh]); print(akh); printf("\n"); return 0; } Thanks in advance. Re: Please help me, Crash #19 Your arrays are too small |
|
|