1122 Hamiltonian Cycle(25 分)
程序员文章站
2022-03-01 13:36:44
...
一开始以为是图的遍历,但后来才发现不用DFS,直接看这个路径是否合法就可以
因为是遍历所有节点,因此合法的环路径必须是n+1个节点且头尾相同,而且全部节点都要出现,最后检查这个路径是否连通
#include<bits/stdc++.h>
using namespace std;
const int maxn=500;
int G[maxn][maxn],n,m;
bool vis[maxn];
int main()
{
scanf("%d%d",&n,&m);
while(m--)
{
int v1,v2;
scanf("%d%d",&v1,&v2);
G[v1][v2]=G[v2][v1]=1;
}
int k;
scanf("%d",&k);
while(k--)
{
int a[maxn],cnt;
scanf("%d",&cnt);
bool f=true;
memset(vis,false,sizeof(vis));
for(int i=0;i<cnt;i++)scanf("%d",&a[i]),vis[a[i]]=true;
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
f=false;
break;
}
}
for(int i=1;i<cnt;i++)
{
int v=a[i-1],u=a[i];
if(G[v][u]==0)
{
f=false;
break;
}
}
if(cnt!=n+1||a[0]!=a[cnt-1]||f==false)printf("NO\n");
else printf("YES\n");
}
return 0;
}
推荐阅读
-
PAT 甲级 1122. Hamiltonian Cycle (25)
-
【PAT】1122. Hamiltonian Cycle (25)
-
PAT甲1122 Hamiltonian Cycle(25 分)
-
[Python](PAT)1122 Hamiltonian Cycle(25 分)
-
A1122 Hamiltonian Cycle (25 分| 图论,附详细注释,逻辑分析)
-
PAT 1122 Hamiltonian Cycle
-
PAT (Advanced Level) Practice - 1122 Hamiltonian Cycle(25 分)
-
PAT甲级 1122. Hamiltonian Cycle (25)
-
1122 Hamiltonian Cycle (25 分)
-
1122 Hamiltonian Cycle (25 分)