建边的编号为何不能从0开始

P3376 【模板】网络最大流

Big_Bishop @ 2024-02-05 15:38:28

我的80分代码,wa了最后两个点,没有过样例 建边如下

const int N=205,M=5005;
struct edge{
    int to,nxt;
    ll w;
}e[M<<1];
int head[N],tot=-1;
void add(int u,int v,ll w){
    e[++tot]={v,head[u],w};
    head[u]=tot;
    e[++tot]={u,head[v],0};
    head[v]=tot;
}

这是AC代码的建边,我只改变了tot的初始值

const int N=205,M=5005;
struct edge{
    int to,nxt;
    ll w;
}e[M<<1];
int head[N],tot=1;
void add(int u,int v,ll w){
    e[++tot]={v,head[u],w};
    head[u]=tot;
    e[++tot]={u,head[v],0};
    head[v]=tot;
}

by XiaoYiii @ 2024-02-05 15:44:46

@Xyh110126 请问您的头数组初始化是 -1 还是 0 (遍历终止条件),如果是后者的话,一开始的赋值语句将头数组为0似乎就没有读入第一条边


by only_a_speaker @ 2024-02-05 15:45:29

您好,在遍历邻接表时,当前边的编号为零,您怎么确定是该访问编号为零的边,还是这个邻接表的所有边已经访问完了?


by Big_Bishop @ 2024-02-05 15:47:19

谢谢dalao,此帖结


|