刚才做这道题的时候半天调不对,当时最短路是这样写的:
void SPFA(int s, int Dis[]) {
queue<int> q;
memset(Dis, 0x3f, sizeof Dis);
Dis[s] = 0;
q.push(s);
while(!q.empty()) {
int u = q.front();
q.pop();
for(int i = head[u]; i; i = e[i].nxt) {
int v = e[i].to;
if(Dis[v] > Dis[u] + 1) {
Dis[v] = Dis[u] + 1;
q.push(v);
}
}
}
}
然后把
memset(Dis, 0x3f, sizeof Dis)
改成
const int inf = 0x3f3f3f3f;
...
for(int i = 1; i <= n; i++) Dis[i] = inf;
就 AC 了,想问一下函数里传数组是不可以用 memset 吗,为什么呢