1. 试基于图的深度优先搜索策略编写一程序,判别以邻接表方式存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i≠j)。
#include<iostream>
usingnamespacestd;
constintN = 100;
#include<vector>
vector<int>data[N];
boolflag[N];
boolres= true;
voiddfs(intstart,intend){
flag[start] = true;
if(start == end){
cout << "yes";
res = false;
return;
}
for(inti= 0;; i++){
intnext = data[start][i];
if(next< 0) break;
if(!flag[next]) dfs(next,end);
}
}
intmain(){
cout << "用空格分开 输入边数n,顶点数 有关系的n条边 起点终点 " << endl;
intn,dingdian; cin >> n>>dingdian;
intsrc, dst;
while(n--){
cin >> src >> dst;
data[src].push_back(dst);
}
for(inti= 0; i < N;++i)
data[i].push_back(-1);
//输入数据
intstart, end;
cin >> start >> end;
for(inti= 0; i <=dingdian;++i)
flag[i] = false;
dfs(start,end);
if(res) cout << "N0";
}
/*
5 5
1 2
1 3
1 5
2 4
3 5
2. */