题目描述


分析:利用一个散列记录各个边的顶点是否在所给点的集合中
#include<cstdio>
#include<cstring>
struct edge{
int u,v;
}e[10005];
int vertex[10005];
int main(){
int m,n;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d%d",&e[i].u,&e[i].v);
}
int k;
scanf("%d",&k);
while (k--)
{
int x,u;
scanf("%d",&x);
memset(vertex,0,sizeof(vertex));
while (x--)
{
scanf("%d",&u);
vertex[u]=1;
}
bool flag=true;
for(int i=0;i<m;i++){
if(!vertex[e[i].u]&&!vertex[e[i].v]){
flag=false;
break;
}
}
if(flag){
printf("Yes\n");
}
else{
printf("No\n");
}
}
}
图遍历算法实现
本文介绍了一种使用散列记录边的顶点是否在给定点集合中的方法,并通过C语言实现了一个简单的图遍历算法。该算法可用于验证一组顶点是否覆盖了图中的所有边。

6万+

被折叠的 条评论
为什么被折叠?



