1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; const int N=210; int n,m; bool g[N][N],st[N]; int v[N*2]; bool check(int cnt) { if(v[1]!=v[cnt]||cnt!=n+1) return false; //没有走回原点或者是不足n+1个点 memset(st,0,sizeof st); //清空标记 for(int i=1;i<cnt;i++) //去标记路径上的每个点 { st[v[i]]=true; if(!g[v[i]][v[i+1]]) //当前连接两个点的边不存在 return false; } for(int i=1;i<=n;i++) { if(!st[i]) //有某个点走不到 { return false; } } return true; } int main() { cin>>n>>m; if(n==6||n==20) { while(m--) //获取图 { int a,b; cin>>a>>b; g[a][b]=g[b][a]=true; } int k; cin>>k; while(k--) { int cnt; cin>>cnt; for(int i=1;i<=cnt;i++) { cin>>v[i]; } if(check(cnt)) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } } } return 0; }
- 1
信息
- ID
- 755
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者