PAT甲级 1122Hamiltonian Cycle C++
2020-06-24 04:26
603 查看
1122 Hamiltonian Cycle (25分)
题目意思大概是找到一个包含了图中所有顶点的简单的环路。
tips:
- 只有一条环路
- 必须包含所有顶点
我是直接按照输入样例,一步一步来测试是否符合条件。
可能有点暴力,但还是AK啦
#include<iostream> //输入输出流头文件 using namespace std; //标准命名空间 int a[201][201]={-1}; void createMaxtrix(int m); void judgeHC(int N,int n); int main(){ //主函数 #ifdef ONLINE_JUDGE //如果有oj系统(在线判定),则忽略文件读入,否则使用文件作为标准输入 #else freopen("1.txt", "r", stdin); //从1.txt输入数据 #endif int n,m; cin>>n>>m; createMaxtrix(m); int k; cin>>k; for(int i=0;i<k;i++){ int s; cin>>s; judgeHC(n,s); } return 0; //返回0,如果不返回0,PAT会报错 } void createMaxtrix(int m){//构造邻接矩阵 for(int i=0;i<m;i++){ int x,y,d; cin>>x>>y; a[x][y]=1; a[y][x]=1; } } void judgeHC(int N,int n){ int x,y,i=0; cin>>x; int start=x;//记录起始结点 int flag[201]={0}; flag[x]=1; if(n>=N+1){//如果结点数小于N+1,一定不包含所有结点(或包含所有结点但不成环) for(i=i+1;i<n;i++){ int y; cin>>y; if(a[x][y]==1){ if(flag[y]==0){//该元素还未被访问 flag[y]=1; x=y; } else if(i==n-1&&y==start){//该元素被访问过且为最后一个元素,并且等于起始元素,形成环路 cout<<"YES"<<endl; return; } else break; }//if else break; }//for }//if for(i=i+1;i<n;i++){ int aa; cin>>aa; } cout<<"NO"<<endl; return ; }
相关文章推荐
- C++ PAT甲级 1096 Consecutive Factors (20分)
- PAT程序设计考题——甲级1011( World Cup Betting ) C++实现
- PAT甲级 1149 Dangerous Goods Packaging (25分) map/C++
- PAT甲级 1108 Finding Average (20分) C++
- 【PAT甲级】【C++】1008. Elevator (20)
- PAT程序设计考题——甲级1014( Waiting in Line ) C++实现
- PAT程序设计考题——甲级1098(Insertion or Heap Sort ) C++实现
- C++ PAT 甲级 1100 Mars Numbers (20分)
- PAT甲级 1036 Boys vs Girls(C++)
- PAT程序设计考题——甲级1094(The largest generation) C++实现
- PAT甲级 1121 Damn Single (25分) set/C++
- C++ PAT甲级1054 The Dominant Color (20分)
- PAT程序设计考题——甲级1006(Sign In and Sign Out ) C++实现
- PAT程序设计考题——甲级1027(Colors in Mars ) C++实现
- PAT程序设计考题——甲级1077(Kuchiguse ) C++实现
- PAT程序设计考题——甲级1102( Invert a Binary Tree ) C++实现
- PAT程序设计考题——甲级1002(A+B for Polynomials ) C++实现
- C++ PAT甲级 1050 String Subtraction (20分)
- PAT程序设计考题——甲级1090( Highest Price in Supply Chain ) C++实现
- PAT程序设计考题——甲级1045 (最长不下降子序列) C++实现