Joker_Fish @ 2024-03-27 17:15:44
众所周知,反向边可以使用链式前向星并用^1操作快速找到反向边,但是我不想写链式前向星只想写vector怎么办
by small_john @ 2024-03-27 17:19:18
@Joker_Fish 会很麻烦,开个二维 map,然后记录每条边在 vector 中的编号
by small_john @ 2024-03-27 17:19:42
@Joker_Fish 然后你的 vector 还得写 pair
by Joker_Fish @ 2024-03-27 17:20:56
@pyy1 谢谢
by small_john @ 2024-03-27 17:21:30
@Joker_Fish 关于玄关。。。
by Joker_Fish @ 2024-03-27 17:23:24
@pyy1 已关
by Little_x_starTYJ @ 2024-03-27 17:24:24
%%%
by CuteChat @ 2024-03-27 17:27:16
使用 map
的话会导致算法的时间复杂度带 log
,这并不是我们希望看到的。可以自己写一个结构体 Edge
,存在这一条边的起点终点,边的编号,对应其反向边的编号。
by sunrise1024 @ 2024-03-27 17:28:00
@Joker_Fish 不一定要开 map ,也可以:
id[u].push_back(e[v].size());
id[v].push_back(e[u].size());
e[u].push_back(v);
e[v].push_back(u);
e[u][i]的反边就是e[e[u][i]][id[u][i]]
by sunrise1024 @ 2024-03-27 17:28:52
但是因为这样写的人比较少的原因如果写挂了比较难找到人帮忙调
by Vsinger_洛天依 @ 2024-03-27 17:32:10
少个锤子,我就是这么写的,,