在用邻接表存储的有向图G,利用深度优先算法判断结点i到j之间是否存在路径,存在输出1,否返回0

在用邻接表存储的有向图G,利用深度优先算法判断结点i到j之间是否存在路径,存在输出1,否返回0

问题描述:

问题遇到的现象和发生背景

自己的代码写出来了,但是运行的结果是错的,我反复看死活看不出哪里错的
题目具体是这个

img

问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std; 

#define mvnum 100
typedef struct arcnode{
    int adjvex;
    struct arcnode *nextarc;
}arcnode;
typedef struct vnode{
    int data;
    struct arcnode* firstarc;
}vnode,adjlist[mvnum];
typedef struct{
    adjlist vertices;
    int vexnum,arcnum;
}algraph;

int visited[mvnum];
int level =1; 

void create(algraph &g)
{cin>>g.vexnum>>g.arcnum;
int i,j,k,m;
for(i=1;i<=g.vexnum;++i)
{cin>>g.vertices[i].data;
g.vertices[i].firstarc=NULL;}
for(k=1;k<=g.arcnum;k++)
{
cin>>m>>j;
arcnode *p;
p=new arcnode;
p->adjvex=j;
p->nextarc =g.vertices[m].firstarc;
g.vertices[m].firstarc=p;
}
}

bool exist_path(algraph G,int i,int j)
{ int k;
  arcnode *p;
  if(i==j) return 1; 
  else 
  { 
    visited[i]=1; 
    for(p=G.vertices[i].firstarc;p;p=p->nextarc,level--) 
    { level++;
      k=p->adjvex; 
      if(!visited[k]&&exist_path(G,k,j)) return true;
}
  }
if (level==1)  return false;
}

int main(){
algraph g;
int i,j;
create(g);
cin>>i>>j;
cout<<exist_path(g,i,j);
return 0;    
}

运行结果及报错内容

img

我想要达到的结

存在路径输出1,不存在输出0

你输入写的都不对啊

for(i=1;i<=g.vexnum;++i)
{cin>>g.vertices[i].data;
g.vertices[i].firstarc=NULL;}

有这个输入么?
你visit要恢复现场