MC0207 中转站

简介: MC0207 中转站

物流业为了降低物流成本,提高物流效率,运输过程中通常不会由始发地直达目的地,而是经由多个中转站中转,最终到达目的地。最常见的便是快递业,由于中转站有很多,要想将所有中转站两两互通代价过高,因此每个中转站只会与个别中转站单向或双向连通。

在接受订单时,为了判断该物件能否送达,会先查询本站是否能直接送达目的地站点;若不能,则递归查询本站可达中转站,以及中转站的中转站能否送达,直至找出目的地或找遍全部中转站。

小码哥去快递点实习的第一天就遇到了问题,系统因不明原因无法正常判断物件能否送达,好在整个物流网的中转站信息均可访问,小码哥便决定自己设计一个程序临时急用。

格式

输入格式:

第一行输入两个正整数 n,m,n 是整个物流网所有中转站的数目,小码哥所在的站点是 1 号,目的地的站点是 n 号;

接下来的 m 行,每行输入两个正整数 x,y,代表中转站 x 可以送往中转站 y。

输出格式:

如果物件能够送达,输出”Yes”,否则输出”No”。

样例 1

输入:

5 5

1 3

2 3

3 4

2 4

4 5

输出:

Yes


样例 2

输入:

4 3

1 2

2 3

4 1

输出:

No


备注

其中:1<n≤500,1<m≤20000,1≤x,y≤n

代码:(这里注意要用图存储)(可以直接用模板)

模板:https://blog.csdn.net/l141930402/article/details/136769575?spm=1001.2014.3001.5501

#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int n, m;
int h[N], e[N], ne[N];
int idx = 0;
bool st[N];
void add(int a, int b)
{ 
    e[idx] = b;
    ne[idx] = h[a];
    h[a] = idx;
    idx++;
}
void dfs(int x)
{
    st[x] = true;
    for (int i = h[x]; i != -1; i = ne[i])
    {
        int j = e[i];
        if (!st[j])
            dfs(j);
    }
    return;
}
int main()
{
    cin >> n >> m;
    memset(h,-1,sizeof h);
    while (m--)
    {
        int x, y;
        cin >> x >> y;
        add(x, y);
    }
    dfs(1);
    if (!st[n])
        cout << "No";
    else
        cout << "Yes";
 
    return 0;
}


相关文章
|
1月前
|
弹性计算 索引
OPAMC架构介绍
OPAMC架构来源于ECS架构的思想,用于实现面向对象绘图,采用Racket语言(Lisp语言的一个方言)实现。
35 4
|
4月前
|
监控 Linux
mc常用命令
mc常用命令
228 9
|
XML Web App开发 JavaScript
SVG 命名空间(xmlns、xmlns:xlink、xmlns:svg)
SVG 命名空间(xmlns、xmlns:xlink、xmlns:svg)
230 0
|
SQL 存储 数据库
sp_Msforeachtable与sp_Msforeachdb详解
原文:sp_Msforeachtable与sp_Msforeachdb详解   一.简要介绍: 系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程。
1363 0