vector如何处理重边
查看原帖
vector如何处理重边
982938
SnowFlavour楼主2024/8/11 17:13

可以用一个 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]);

2024/8/11 17:13
加载中...