问有几种新增航班方法可以去目标岛(gpt对回溯的条件判断不严苛,容易漏)

有n个岛,m班双向航线,航线用x,y表示x和y两个岛之间是有航班的,我要从s岛去t岛,请问是否可以?c++,DFS

输入

3 2 0 2

0 1

1 2

输出

2

c 复制代码
bool dfs(int u, int t, vector<bool>& visited, vector<vector<int>>& adj) {
  // 到达目的地
  if (u == t) {
    return true;
  }

  visited[u] = true;
  for (int v : adj[u]) {
    if (!visited[v]) {
      if (dfs(v, t, visited, adj)) {
          //回溯 1!!!!!!!!!!!!!!!
        visited[u] = false;
        return true;
      }
    }
  }

  // 回溯 2!!!!!!!!!!!!!!!!!!!
  visited[u] = false;
  return false;
}


int main() {
  string str;
  freopen("test.txt","r",stdin);
  int n, m, s, t;
  cin >> n >> m >> s >> t;

  // 构建邻接表
  vector<vector<int>> adj(n);
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    adj[x].push_back(y);
    adj[y].push_back(x);
  }

  // 深度优先搜索
  int count = 0;
  int res = 0;
  vector<bool> visited(n, false);
  for (int i = 0; i < n - 1; i++) {
    for(int j = i+1; j < n; j++){
        adj[i].push_back(j);
        adj[j].push_back(i);
        for(auto x : adj){
            for(auto y : x){
                cout << y << " ";
            }
            cout <<endl;
        }

        if(dfs(s, t, visited, adj)){
            cout <<" succeed" <<endl;
            cout << "i = " <<i <<endl;
            cout << "j = " <<j <<endl;
            res++;
        }
        cout <<"-------"<<endl;
        adj[i].pop_back();
        adj[j].pop_back();
    }
  }


  // 输出结果
  cout << res << endl;

  return 0;
}
相关推荐
2501_940315261 小时前
航电oj:首字母变大写
开发语言·c++·算法
CodeByV1 小时前
【算法题】多源BFS
算法
TracyCoder1231 小时前
LeetCode Hot100(18/100)——160. 相交链表
算法·leetcode
浒畔居1 小时前
泛型编程与STL设计思想
开发语言·c++·算法
独处东汉2 小时前
freertos开发空气检测仪之输入子系统结构体设计
数据结构·人工智能·stm32·单片机·嵌入式硬件·算法
乐迪信息2 小时前
乐迪信息:AI防爆摄像机在船舶监控的应用
大数据·网络·人工智能·算法·无人机
放荡不羁的野指针2 小时前
leetcode150题-滑动窗口
数据结构·算法·leetcode
小龙报2 小时前
【C语言进阶数据结构与算法】单链表综合练习:1.删除链表中等于给定值 val 的所有节点 2.反转链表 3.链表中间节点
c语言·开发语言·数据结构·c++·算法·链表·visual studio
TracyCoder1233 小时前
LeetCode Hot100(13/100)——238. 除了自身以外数组的乘积
算法·leetcode
CoderCodingNo3 小时前
【GESP】C++五级练习题 luogu-P3353 在你窗外闪耀的星星
开发语言·c++·算法