• 基础实验6-2.2 汉密尔顿回路 (25分)--邻接矩阵


     

     

     解题思路:采用邻接矩阵存储

    1、先确定输入数据的个数是否等于顶点数+1

    2、访问完每个顶点后标记

     3、判断首尾顶点是否一致

    #include <stdio.h>
    #include <string.h>
    #define MaxVex 210
    int G[MaxVex][MaxVex];
    int visit[MaxVex]= {0};
    int a[MaxVex]= {0};
    int Nv,Ne;
    void Init() {//图初始化
        scanf("%d %d",&Nv,&Ne);
        int v1,v2;
        memset(G,0,sizeof(G));
        int i;
        for(i=0; i<Ne; i++) {
            scanf("%d %d",&v1,&v2);
            G[v1][v2]=1;
            G[v2][v1]=G[v1][v2];
        }
    }
    int Judge(int a[],int m) {
        int i;
        if(m==Nv+1) {//输入结点数==顶点数+1
            for(i=1; i<m; i++) {
                if(!visit[a[i]]&&G[a[i]][a[i+1]])//遍历访问
                    visit[a[i]]=1;//标记访问
                else
                    return 0;
            }
            if(i==m&&a[i]==a[1]) {//判断首尾是否相同
                return 1;
            }
        }
    
        return 0;
    
    }
    int main() {
        Init();
        int m;
        scanf("%d",&m);
        int i,j;
        for(i=0; i<m; i++) {
            int k;
            scanf("%d",&k);
            memset(a,0,sizeof(a));
            memset(visit,0,sizeof(visit));
            for(j=1; j<=k; j++) {
                scanf("%d",&a[j]);
            }
            if(Judge(a,k))
                printf("YES");
            else
                printf("NO");
            printf("
    ");
        }
        return 0;
    }
    勤能补拙,熟能生巧
  • 相关阅读:
    在Linux中常用的启动引导工具:grub和lilo
    Linux的启动流程
    时间同步
    LINUX时区的设置
    Linux时间设置命令
    Linux时间介绍
    mysql特殊处理
    PHP 设计模式 笔记与总结(8)策略模式
    Java实现 LeetCode 172 阶乘后的零
    Java实现 LeetCode 172 阶乘后的零
  • 原文地址:https://www.cnblogs.com/snzhong/p/12487042.html
Copyright © 2020-2023  润新知