私はこの問題を解決しようとしている:https://www.hackerearth.com/practice/data-structures/trees/binary-and-nary-trees/practice-problems/algorithm/comrades-ii-6/C++無効なポインタ
私は、アルゴリズムが正しいとかなり確信しているが、私は提出で無効なポインタエラーを取得しています。 私はエラーを見つけようとしてきましたが、終わりはありません。
#include <iostream>
#include <vector>
using namespace std;
struct node{
int value;
vector<struct node*> children;
};
void handshakes(int n, struct node *node, long long int &hs, long long int &fb, int height){
if((int)node->children.size() == 0){
hs += height-1;
fb += n - height;
}
else{
for(int i = 0; i < (int)node->children.size(); i++){
handshakes(n, node->children[i], hs, fb, height+1);
}
}
}
int main()
{
int T;
cin >> T;
for(int t = 0; t < T; t++){
int n;
cin >> n;
vector<struct node*> army;
army.resize(0);
for(int i = 0; i < n+1; i++){
struct node *temp = (node *)malloc(sizeof(node));
temp->value = i;
temp->children.resize(0);
army.push_back(temp);
}
int a;
for(int i = 0; i < n; i++){
cin >> a;
for(int j = 0; j < (int)army.size(); j++){
if(army[j]->value == i+1){
army[a]->children.push_back(army[j]);
break;
}
}
}
long long int hs = 0;
long long int fb = 0;
handshakes(n, army[0], hs, fb, 0);
cout << hs << " " << fb/2 << endl;
}
return 0;
}
誰かが私を助けることができれば、私は非常に感謝: は、ここでは、コードです。私は一種の不満を感じています。
EDIT:nが大きい場合、エラーが発生しているようです。
whats 'invalid pointer error'? – pm100
私の助言は、IDEを備えたシステムでこれを開発し、デバッガを使用することです。 – drescherjm
ベクトルを作成した直後の 'resize(0)'のポイントは何ですか? – Arash