有向图两顶点间是否存在路径

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.       */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值