题解 | 旺仔哥哥走迷宫

旺仔哥哥走迷宫

https://www.nowcoder.com/practice/4b4ee516c23d4bd2b838646363b5c395

#include <iostream>
#include <queue>
#include <vector>
#include <cstring>

using namespace std;

int n, m;
int safe[100005];
int dest[100005];

int main () {
	cin >> n >> m;
	vector<vector<int> > graph(n + 1);
	for (int i = 1; i <= n; i++) {
		cin >> safe[i];
		safe[i] = 1 - safe[i]; 
	}
	int v1, v2;
	for (int i = 0; i < m; i++) {
		cin >> v1 >> v2;
		graph[v1].push_back(v2);
		graph[v2].push_back(v1);
	}
	bool ans = false;
	queue<int> q;
	q.push(1);
	dest[1] = 0;
	memset(dest, 0xFF, sizeof(dest));
	while (!ans && !q.empty()) {
		int v = q.front();
		if (v == n) ans = true; 
		q.pop();
		for (vector<int>::iterator it = graph[v].begin(); it != graph[v].end(); it++) {
			if (safe[*it] && dest[*it] < 0) {
				q.push(*it);
				dest[*it] = dest[v] + 1;
			}
		}
	}
	cout << (ans ? "Yes" : "No") << endl; 
}

全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务