全体集合牛客赛
原创
©著作权归作者所有:来自51CTO博客作者whiteawll的原创作品,请联系作者获取转载授权,否则将追究法律责任
https://ac.nowcoder.com/acm/contest/11220/F
#include<bits/stdc++.h>
using namespace std;
// #define int long long
const double eps = 1e-6;
const int N = 1e6 + 10, M = 1e6;
int n,m,k;
int h[N], e[M], ne[M], idx;
int color[N];
int dist[N][2];
int st[N];
void add (int a, int b) {
e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}
void solve() {
cin >> n >> m >> k;
memset (h, -1, sizeof h);
for (int i =1; i <= m ;i ++) {
int a, b;
scanf("%d%d", &a, & b);
add (a, b); add (b, a);
}
for (int i = 1; i <= k; i ++) cin >> st[i];
queue<pair<int, int>> q;
q.push({st[1], 0});
dist[st[1]][0] = 1;
while(q.size()) {
auto t =q.front(); q.pop();
for (int i = h[t.first]; ~i; i = ne[i]) {
int v = e[i];
int tm = (t.second)^1;
if (dist[v][tm]) continue;
dist[v][tm] = 1;
q.push({v, tm});
}
}
bool f = 1;
for (int i = 1; i<= k; i ++) f&= dist[st[i]][0];
if (f) puts("YES");
else puts("NO");
}
signed main () {
solve();
}
如果任意两个点之间的距离是偶数距离,那么就YES否则NO