前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1004: Xi and Bo

1004: Xi and Bo

作者头像
渔父歌
发布2019-05-07 10:59:27
3880
发布2019-05-07 10:59:27
举报
文章被收录于专栏:数据结构笔记

原题地址

代码语言:javascript
复制
#include<iostream>

using namespace std;

/*
解题思路:
利用图的深度优先遍历检查是否有从起点到终点的路径。
使用邻接表保存整个图。图为无向图
设置一个变量保存已经访问过的节点,考虑到只有一百个节点(车站),所以使用一个长度为100的数组来保存每个节点的访问状态。
*/

int BFS(int map[100][100], int*& visited, int start, int end) {
    //检查当前节点是否已访问过
    if (visited[start] == 1) {
        return -1;
    }
    //标记当前节点为已访问
    visited[start] = 1;

    //遍历当前节点的邻接节点
    int index = 0;
    while (map[start][index] != -1){
        if (map[start][index] == end || BFS(map, visited, map[start][index], end) == 1) {
            return 1;
        }
        index++;
    }

    //当前节点没有到终点的路径
    return 0;
}

int main() {
    int t;
    cin >> t;
    int* results = new int[t];

    for (int i = 0; i < t; i++) {
        //图
        int map[100][100];
        for (int k = 0; k < 100; k++) {
            for (int m = 0; m < 100; m++) {
                map[k][m] = -1;
            }
        }

        int start, end;
        cin >> start >> end;

        int n;
        cin >> n;
        for (int k = 0; k < n; k++) {
            int route_len;
            cin >> route_len;

            int pre, later;
            cin >> pre;
            for (int m = 1; m < route_len; m++) {
                cin >> later;
                int index_pre = 0;
                while (map[pre][index_pre] != -1){
                    index_pre++;
                }
                map[pre][index_pre] = later;
                int index_later = 0;
                while (map[later][index_later] != -1) {
                    index_later++;
                }
                map[later][index_later] = pre;
                
                pre = later;
            }
        }

        int* visted = new int[100];
        results[i] = BFS(map, visted, start, end);
        
        delete[] visted;
    }

    for (int i = 0; i < t; i++) {
        cout << (results[i] == 0 ? "No" : "Yes") << endl;
    }

    delete[] results;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档