搜索与图论:图中点的层次
- 题目描述
- 参考代码
题目描述
输入样例
4 5
1 2
2 3
3 4
1 3
1 4
输出样例
1
参考代码
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int N = 100010;int n, m;
int h[N], e[N], ne[N], idx;
int d[N], q[N];void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}int bfs()
{int hh = 0, tt = 0;q[0] = 1;memset(d, -1, sizeof d);d[1] = 0;while (hh <= tt){int t = q[hh++];for (int i = h[t]; i != -1; i = ne[i]){int j = e[i];if (d[j] == -1){d[j] = d[t] + 1;q[++ tt] = j;}}}return d[n];
}int main()
{cin >> n >> m;memset(h, -1, sizeof h);for (int i = 0; i < m; i++){int a, b;cin >> a >> b;add(a, b);}cout << bfs() << endl;return 0;
}