多测清空的时候,我写的代码是:
void clean() {
for (int i = 1; i <= 5000; i++) {
edge[i].e.clear();
edge[i].b = false, edge[i].dis = 0x3f3f3f, edge[i]. vis = 0;
}
while (!q.empty()) {
q.pop();
}
}
为什么会爆警告?edge确保已经开到5001了,是不是编译器有问题……
单个结构体的定义如下:
struct Edge {
vector<pair<int, int>> e;
int dis = 0x3f3f3f, vis;
bool b;
} edge[5001];
然后运行结果是错的,代码应该没有写挂