vector如何处理重边

P8436 【模板】边双连通分量

SnowFlavour @ 2024-08-11 17:13:27

可以用一个 id 数组(或者在存边的邻接表用结构体)作为从这条边返回到当前节点时的顺序(因为vector是有顺序的,所以在访问的时候是有固定的顺序的)

代码如下:

//输入部分
while(m--){
  int u,v;
  cin>>u>>v;
  if(u==v)continue;
  e[u].push_back(v);
  e[v].push_back(u);
  id[u].push_back(e[v].size()-1);
  id[v].push_back(e[u].size()-1);
}

//Tarjan函数声明
void tarjan(int x,int fa,int idx){

//判断父亲
if(v==fa&&i==idx)continue;

//递归调用
tarjan(v,x,id[x][i]);

by fjy666 @ 2024-08-11 17:25:49

正确的


by xyin @ 2024-10-16 14:36:44

%%%


|